Ejemplo n.º 1
0
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])
Ejemplo n.º 2
0
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},
        ]
    )