init_db.py 900 Bytes
import sys
from configparser import ConfigParser
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import register
import transaction
from opensipkd.views.models import Conf as BaseConf
from ..models import (
    Base,
    PkbKodeNominal,
    )
from ..common import (
    my_registry,
    append_csv,
    )


def main(argv=sys.argv[1:]):
    conf_file = argv[0]
    conf = ConfigParser()
    conf.read(conf_file)
    db_url = conf.get('main', 'report_db_url')
    engine = create_engine(db_url, echo=True)
    Base.metadata.create_all(engine)
    BaseConf.metadata.create_all(engine)
    factory = sessionmaker(bind=engine)
    my_registry['db_session'] = db_session = factory()
    register(db_session)
    with transaction.manager:
        append_csv(BaseConf, 'conf.csv', ['nama'])
        append_csv(PkbKodeNominal, 'pkb_kode_nominal.csv', ['id'])