def alembic_tests(): print(f'Alembic tests') conn = engine.connect() ctx = MigrationContext.configure(conn) op = Operations(ctx) try: op.drop_table('waste') except: pass t = op.create_table( 'waste', Column('bools', sa.Boolean), Column('ubytes', sa.Tinyint), Column('shorts', sa.SmallInteger), Column('ints', sa.Integer), Column('bigints', sa.BigInteger), Column('floats', sa.REAL), Column('doubles', sa.Float), Column('dates', sa.Date), Column('datetimes', sa.DateTime), Column('varchars', sa.String(10)), Column('nvarchars', sa.UnicodeText), Column('numerics', sa.Numeric(38, 10)), ) data = [{ 'bools': True, 'ubytes': 5, 'shorts': 55, 'ints': 555, 'bigints': 5555, 'floats': 5.0, 'doubles': 5.5555555, 'dates': date(2012, 11, 23), 'datetimes': datetime(2012, 11, 23, 16, 34, 56), 'varchars': 'bla', 'nvarchars': 'bla2', 'numerics': Decimal("1.1") }, { 'bools': False, 'ubytes': 6, 'shorts': 66, 'ints': 666, 'bigints': 6666, 'floats': 6.0, 'doubles': 6.6666666, 'dates': date(2012, 11, 24), 'datetimes': datetime(2012, 11, 24, 16, 34, 57), 'varchars': 'bla', 'nvarchars': 'bla2', 'numerics': Decimal("-1.1") }] op.bulk_insert(t, data) res = engine.execute('select * from waste').fetchall() assert (res == [tuple(dikt.values()) for dikt in data])
def execute_script(app, seed_file: str): file_name = os.path.basename(seed_file) file_name_without_extension = file_name.replace(".py", "") working_directory = os.path.abspath(os.getcwd()) relative_path = os.path.relpath(os.path.dirname(seed_file), working_directory) module_path = relative_path.replace("/", ".").replace("\\", ".") db: SQLAlchemy = app.extensions['sqlalchemy'].db exec(f"from {module_path}.{file_name_without_extension} import run") eval(f"run(db)") conn = db.engine.connect() ctx = MigrationContext.configure(conn) op = Operations(ctx) op.bulk_insert(seed_table, [ {'file': file_name_without_extension}, ] )