remove dependency to MariaDB and improve import of field published_on
This commit is contained in:
@@ -2,7 +2,6 @@
|
|||||||
Setup database connections
|
Setup database connections
|
||||||
"""
|
"""
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import mariadb
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import logging.config
|
import logging.config
|
||||||
from platformdirs import PlatformDirs
|
from platformdirs import PlatformDirs
|
||||||
@@ -19,13 +18,6 @@ def get_database_cursors(log, config: str):
|
|||||||
log.info('using SQLite3 database {}'.format(sqlite_db))
|
log.info('using SQLite3 database {}'.format(sqlite_db))
|
||||||
sqlite_conn = sqlite3.connect(sqlite_db, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
|
sqlite_conn = sqlite3.connect(sqlite_db, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
|
||||||
mariadb_conn = None
|
mariadb_conn = None
|
||||||
# mariadb_conn = mariadb.connect(
|
|
||||||
# host=db_config['mariadb']['host'],
|
|
||||||
# port=db_config['mariadb']['port'],
|
|
||||||
# user=db_config['mariadb']['user'],
|
|
||||||
# password=db_config['mariadb']['password'],
|
|
||||||
# database=db_config['mariadb']['database']
|
|
||||||
# )
|
|
||||||
postgres_conn = psycopg2.connect(f"host={db_config['postgres']['host']} port={db_config['postgres']['port']} user={db_config['postgres']['user']} password={db_config['postgres']['password']} dbname={db_config['postgres']['database']}")
|
postgres_conn = psycopg2.connect(f"host={db_config['postgres']['host']} port={db_config['postgres']['port']} user={db_config['postgres']['user']} password={db_config['postgres']['password']} dbname={db_config['postgres']['database']}")
|
||||||
return sqlite_conn, mariadb_conn, postgres_conn
|
return sqlite_conn, mariadb_conn, postgres_conn
|
||||||
|
|
||||||
@@ -62,60 +54,3 @@ def get_logger(level, config: str):
|
|||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
return logger
|
return logger
|
||||||
|
|
||||||
|
|
||||||
def get_meta_data(mariadb_conn):
|
|
||||||
mariadb_cursor = mariadb_conn.cursor()
|
|
||||||
select_statement = "SELECT id, table_name FROM meta_data_table"
|
|
||||||
mariadb_cursor.execute(select_statement)
|
|
||||||
rows = mariadb_cursor.fetchall()
|
|
||||||
meta_data = {}
|
|
||||||
for (identifier, table_name) in rows:
|
|
||||||
table_data = {"name": table_name}
|
|
||||||
mariadb_cursor.execute("SELECT column_name, column_sync_name, column_type, column_modifier, column_order FROM meta_data_column WHERE table_id=?", (identifier, ))
|
|
||||||
column_rows = mariadb_cursor.fetchall()
|
|
||||||
column_list = []
|
|
||||||
for (column_name, column_sync_name, column_type, column_modifier, column_order) in column_rows:
|
|
||||||
column_data = {"column_name": column_name, "column_sync_name": column_sync_name, "column_type": column_type,
|
|
||||||
"column_modifier": column_modifier, "column_order": column_order}
|
|
||||||
column_list.append(column_data)
|
|
||||||
# logger.info(column_list)
|
|
||||||
table_data["columns"] = column_list
|
|
||||||
meta_data[identifier] = table_data
|
|
||||||
return meta_data
|
|
||||||
|
|
||||||
|
|
||||||
def get_scripts(meta_data, logger):
|
|
||||||
scripts_map = {}
|
|
||||||
for table_id in meta_data:
|
|
||||||
table_scripts = {}
|
|
||||||
m_columns = []
|
|
||||||
s_columns = []
|
|
||||||
columns = []
|
|
||||||
for column_data in meta_data[table_id]["columns"]:
|
|
||||||
column_line = "{} {}".format(column_data["column_sync_name"], column_data["column_type"])
|
|
||||||
if column_data["column_modifier"]:
|
|
||||||
column_line += " " + column_data["column_modifier"]
|
|
||||||
columns.append(column_line)
|
|
||||||
m_columns.append(column_data['column_name'])
|
|
||||||
s_columns.append(column_data['column_sync_name'])
|
|
||||||
table_name = meta_data[table_id]["name"]
|
|
||||||
create_statement = "CREATE TABLE IF NOT EXISTS {} ({});".format(table_name, ", ".join(columns))
|
|
||||||
drop_statement = 'DROP TABLE IF EXISTS {}'.format(table_name)
|
|
||||||
select_mariadb_statement = 'SELECT {} FROM {}'.format(', '.join(m_columns), table_name)
|
|
||||||
select_sqlite_statement = 'SELECT {} FROM {}'.format(', '.join(s_columns), table_name)
|
|
||||||
insert_sqlite_statement = 'INSERT INTO {}({}) VALUES({})'.format(table_name, ', '.join(s_columns), ', '.join(['?']*len(s_columns)))
|
|
||||||
insert_mariadb_statement = 'INSERT INTO {}({}) VALUES({})'.format(table_name, ', '.join(m_columns), ', '.join(['?']*len(m_columns)))
|
|
||||||
truncate_mariadb_statement = 'TRUNCATE {}'.format(table_name)
|
|
||||||
#logger.debug(create_statement)
|
|
||||||
#logger.debug(select_mariadb_statement)
|
|
||||||
table_scripts["create"] = create_statement
|
|
||||||
table_scripts["drop"] = drop_statement
|
|
||||||
table_scripts["select_mariadb"] = select_mariadb_statement
|
|
||||||
table_scripts["select_sqlite"] = select_sqlite_statement
|
|
||||||
table_scripts["insert_sqlite"] = insert_sqlite_statement
|
|
||||||
table_scripts["insert_mariadb"] = insert_mariadb_statement
|
|
||||||
table_scripts["truncate_mariadb"] = truncate_mariadb_statement
|
|
||||||
table_scripts["count"] = "SELECT COUNT(*) FROM {}".format(table_name)
|
|
||||||
table_scripts["name"] = table_name
|
|
||||||
scripts_map[table_id] = table_scripts
|
|
||||||
return scripts_map
|
|
||||||
|
|||||||
@@ -203,6 +203,9 @@ class Issue(Base, BaseMixin):
|
|||||||
self.version = import_data['version']
|
self.version = import_data['version']
|
||||||
self.issue_number = import_data['issue_number']
|
self.issue_number = import_data['issue_number']
|
||||||
self.title = import_data['title']
|
self.title = import_data['title']
|
||||||
|
if import_data['published_on'] == 'None':
|
||||||
|
self.published_on = None
|
||||||
|
else:
|
||||||
self.published_on = import_data['published_on']
|
self.published_on = import_data['published_on']
|
||||||
self.in_stock = import_data['in_stock']
|
self.in_stock = import_data['in_stock']
|
||||||
self.is_read = import_data['is_read']
|
self.is_read = import_data['is_read']
|
||||||
|
|||||||
Reference in New Issue
Block a user