move schema to separate uv project
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
"""
|
||||
copy data from MariaDB to SQLite
|
||||
"""
|
||||
import sqlite3
|
||||
import mariadb
|
||||
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
|
||||
from config import get_database_cursors, create_tables, get_logger, get_meta_data, get_scripts
|
||||
|
||||
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument('--recreate-db', action='store_true')
|
||||
parser.add_argument('--verbose', '-v', action='count', default=0)
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
def copy_data(mariadb_conn, sqlite_conn, table_scripts):
|
||||
mariadb_cursor = mariadb_conn.cursor()
|
||||
sqlite_cursor = sqlite_conn.cursor()
|
||||
# logger.info(table_scripts)
|
||||
for table_id in table_scripts:
|
||||
select_statement = scripts[table_id]['select_mariadb']
|
||||
# logger.info(select_statement)
|
||||
insert_statement = scripts[table_id]['insert_sqlite']
|
||||
try:
|
||||
mariadb_cursor.execute(select_statement)
|
||||
rows = mariadb_cursor.fetchall()
|
||||
for row in rows:
|
||||
try:
|
||||
sqlite_cursor.execute(insert_statement, row)
|
||||
except sqlite3.Error as error:
|
||||
logger.info('insert failed with %s\n%s\n%s', error, insert_statement, row)
|
||||
sqlite_conn.commit()
|
||||
mariadb_cursor.execute(scripts[table_id]['count'])
|
||||
(number_of_rows,) = mariadb_cursor.fetchone()
|
||||
row = sqlite_cursor.execute(scripts[table_id]['count']).fetchone()
|
||||
logger.info('%s contains %d : %d entries', scripts[table_id]['name'], number_of_rows, row[0])
|
||||
except mariadb.Error as error:
|
||||
logger.info('select failed with %s', error)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
logger = get_logger(args.verbose)
|
||||
logger.info('kontor.copy_to_sqlite started')
|
||||
s_conn, m_conn = get_database_cursors(logger)
|
||||
meta_data_tables = get_meta_data(m_conn)
|
||||
# logger.info(meta_data_tables)
|
||||
scripts = get_scripts(meta_data_tables, logger)
|
||||
create_tables(s_conn, logger, args.recreate_db, scripts)
|
||||
copy_data(m_conn, s_conn, scripts)
|
||||
s_conn.close()
|
||||
m_conn.close()
|
||||
logger.info('kontor.copy_to_sqlite finished')
|
||||
Reference in New Issue
Block a user