Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions invisible_cities/database/db_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,10 @@ def connect_mysql(dbname):
user='nextreader',passwd='readonly', db=dbname)
cursor_mysql = conn_mysql .cursor()
return connect_mysql, cursor_mysql

@mark.skip(reason='server timeouts cause too many spurious test failures')
def connect_dolt_mysql(dbname):
conn_mysql = pymysql.connect(host="next.ific.uv.es", port=3307,
user='nextreader',passwd='readonly', db=dbname)
cursor_mysql = conn_mysql .cursor()
return connect_mysql, cursor_mysql
25 changes: 25 additions & 0 deletions invisible_cities/database/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
import os
import re
from os import path
from datetime import datetime

# Absolute imports to allow usage as standalone program:
# python invisible_cities/database/download.py
from invisible_cities.database.db_connection import connect_sqlite
from invisible_cities.database.db_connection import connect_mysql
from invisible_cities.database.db_connection import connect_dolt_mysql


def create_table_sqlite(cursorSqlite, cursorMySql, table):
Expand Down Expand Up @@ -70,6 +72,27 @@ def loadDB(dbname : str, tables : list):
# Copy data
copy_all_rows(conn_sqlite, cursor_sqlite, cursor_mysql, table)

def write_db_version(dbname: str):
dbfile = path.join(os.environ['ICDIR'], 'database/localdb.'+dbname+'.sqlite3')
try:
conn_mysql , cursor_mysql = connect_dolt_mysql(dbname)
except pymysql.err.OperationalError:
print(f"DB versioning not implemented for database {dbname}")
return
conn_sqlite, cursor_sqlite = connect_sqlite(dbfile)
sql = 'select commit_hash, date from dolt_diff order by date desc limit 1'
cursor_mysql.execute(sql)
data = cursor_mysql.fetchall()
if len(data) == 1:
db_version = data[0][0]
date = data[0][1]
timestamp = datetime.timestamp(date)
sql_table = "create table db_version(version VARCHAR(20), date timestamp null)"
cursor_sqlite.execute(sql_table)
sql_value = f'insert into db_version (version, date) values ("{db_version}", {timestamp})'
cursor_sqlite.execute(sql_value)
conn_sqlite.commit()


dbnames = ('NEWDB', 'DEMOPPDB', 'NEXT100DB', 'Flex100DB')
common_tables = ('DetectorGeo','PmtBlr','ChannelGain','ChannelMapping','ChannelMask',
Expand All @@ -85,6 +108,8 @@ def loadDB(dbname : str, tables : list):
if len(sys.argv) > 1:
dbname = sys.argv[1]
loadDB(dbname, table_dict[dbname])
write_db_version(dbname)
else:
for dbname, tables in table_dict.items():
loadDB(dbname, tables)
write_db_version(dbname)
10 changes: 10 additions & 0 deletions invisible_cities/database/load_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,13 @@ def RadioactivityData(db_file, version=None):

return ( activity .drop(columns="MAX(Version)")
, efficiency.drop(columns="MAX(Version)"))

def read_db_version(db_file):
conn = sqlite3.connect(get_db(db_file))
sql = 'select * from db_version'
try:
data = pd.read_sql_query(sql, conn)
return data
except pd.io.sql.DatabaseError:
# Deal with this...
print("Database does not have db_version table")
Loading