Module secfsdstools.b_setup.setupdb
Creation of the database.
Expand source code
"""
Creation of the database.
"""
import glob
import logging
import os
from typing import Dict
from secfsdstools.a_utils.dbutils import DB
CURRENT_DIR, CURRENT_FILE = os.path.split(__file__)
DDL_PATH = os.path.join(CURRENT_DIR, "sql")
LOGGER = logging.getLogger(__name__)
class DbCreator(DB):
"""
responsible to create the database.
"""
def __init__(self, db_dir: str):
super().__init__(db_dir=db_dir)
def create_db(self):
"""
reads the ddl files from the ddl directory and creates the tables
"""
sqlfiles = list(glob.glob(f"{DDL_PATH}/*.sql"))
indexes_dict: Dict[int, str] = {}
for sqlfile in sqlfiles:
LOGGER.debug("extract version from sql file %s ... ", sqlfile)
index = int(sqlfile[sqlfile.rfind(f'{os.path.sep}V') + 2:sqlfile.find('__')])
LOGGER.debug(" ... extracted version: %d", index)
indexes_dict[index] = sqlfile
indexes = sorted(indexes_dict.keys())
if not os.path.isdir(self.db_dir):
LOGGER.info("creating folder for db: %s", self.db_dir)
os.makedirs(self.db_dir)
conn = self.get_connection()
curr = conn.cursor()
for index in indexes:
sqlfile = indexes_dict[index]
with open(sqlfile, 'r', encoding='utf8') as scriptfile:
script = scriptfile.read()
LOGGER.debug("execute creation script %s", sqlfile)
curr.executescript(script)
conn.commit()
conn.close()
Classes
class DbCreator (db_dir: str)
-
responsible to create the database.
Expand source code
class DbCreator(DB): """ responsible to create the database. """ def __init__(self, db_dir: str): super().__init__(db_dir=db_dir) def create_db(self): """ reads the ddl files from the ddl directory and creates the tables """ sqlfiles = list(glob.glob(f"{DDL_PATH}/*.sql")) indexes_dict: Dict[int, str] = {} for sqlfile in sqlfiles: LOGGER.debug("extract version from sql file %s ... ", sqlfile) index = int(sqlfile[sqlfile.rfind(f'{os.path.sep}V') + 2:sqlfile.find('__')]) LOGGER.debug(" ... extracted version: %d", index) indexes_dict[index] = sqlfile indexes = sorted(indexes_dict.keys()) if not os.path.isdir(self.db_dir): LOGGER.info("creating folder for db: %s", self.db_dir) os.makedirs(self.db_dir) conn = self.get_connection() curr = conn.cursor() for index in indexes: sqlfile = indexes_dict[index] with open(sqlfile, 'r', encoding='utf8') as scriptfile: script = scriptfile.read() LOGGER.debug("execute creation script %s", sqlfile) curr.executescript(script) conn.commit() conn.close()
Ancestors
- DB
- abc.ABC
Methods
def create_db(self)
-
reads the ddl files from the ddl directory and creates the tables
Expand source code
def create_db(self): """ reads the ddl files from the ddl directory and creates the tables """ sqlfiles = list(glob.glob(f"{DDL_PATH}/*.sql")) indexes_dict: Dict[int, str] = {} for sqlfile in sqlfiles: LOGGER.debug("extract version from sql file %s ... ", sqlfile) index = int(sqlfile[sqlfile.rfind(f'{os.path.sep}V') + 2:sqlfile.find('__')]) LOGGER.debug(" ... extracted version: %d", index) indexes_dict[index] = sqlfile indexes = sorted(indexes_dict.keys()) if not os.path.isdir(self.db_dir): LOGGER.info("creating folder for db: %s", self.db_dir) os.makedirs(self.db_dir) conn = self.get_connection() curr = conn.cursor() for index in indexes: sqlfile = indexes_dict[index] with open(sqlfile, 'r', encoding='utf8') as scriptfile: script = scriptfile.read() LOGGER.debug("execute creation script %s", sqlfile) curr.executescript(script) conn.commit() conn.close()
Inherited members