init_db.py 792 Bytes
import sys
import os
from configparser import ConfigParser
from sqlalchemy import engine_from_config
from sqlalchemy.sql.expression import text
from .models import Base


t = os.path.split(__file__)
current_dir = t[0]


def execute(engine, filename):
    fullpath = os.path.join(current_dir, filename)
    with open(fullpath) as f:
        sql = f.read()
    engine.execute(text(sql))


def main(argv=sys.argv[1:]):
    conf_file = argv[0]
    conf = ConfigParser()
    conf.read(conf_file)
    engine = engine_from_config(conf['main'], 'db_')
    engine.echo = True
    Base.metadata.create_all(engine)
    execute(engine, 'func-rec-to-json.sql')
    for operation in ('insert', 'update', 'delete'):
        filename = f'func-trigger-after-{operation}.sql'
        execute(engine, filename)