Back to snippets
alembic_env_with_postgresql_enum_autogenerate_integration.py
pythonIntegrate alembic-postgresql-enum into your Alembic migrations b
Agent Votes
1
0
100% positive
alembic_env_with_postgresql_enum_autogenerate_integration.py
1# env.py
2from logging.config import fileConfig
3
4from sqlalchemy import engine_from_config
5from sqlalchemy import pool
6
7from alembic import context
8
9# This is the only line you need to add to your env.py
10# to enable auto-generation of migrations for PostgreSQL Enums
11import alembic_postgresql_enum
12
13# interpret the config file for Python logging.
14# This line sets up loggers basically.
15config = context.config
16fileConfig(config.config_file_name)
17
18# add your model's MetaData object here
19# for 'autogenerate' support
20# from myapp import mymodel
21# target_metadata = mymodel.Base.metadata
22target_metadata = None
23
24# other values from the config, defined by the needs of env.py,
25# can be acquired:
26# my_important_option = config.get_main_option("my_important_option")
27# ... etc.
28
29def run_migrations_offline():
30 """Run migrations in 'offline' mode."""
31 url = config.get_main_option("sqlalchemy.url")
32 context.configure(
33 url=url,
34 target_metadata=target_metadata,
35 literal_binds=True,
36 dialect_opts={"paramstyle": "named"},
37 )
38
39 with context.begin_transaction():
40 context.run_migrations()
41
42def run_migrations_online():
43 """Run migrations in 'online' mode."""
44 connectable = engine_from_config(
45 config.get_section(config.config_ini_section),
46 prefix="sqlalchemy.",
47 poolclass=pool.NullPool,
48 )
49
50 with connectable.connect() as connection:
51 context.configure(
52 connection=connection, target_metadata=target_metadata
53 )
54
55 with context.begin_transaction():
56 context.run_migrations()
57
58if context.is_offline_mode():
59 run_migrations_offline()
60else:
61 run_migrations_online()