Generate and manage Alembic database migrations for Qasyp App. Use when adding a new model, changing a column, adding an index, or running migrations in any environment. Encodes safe migration practices to protect production data.
Generate and manage database schema migrations using Alembic for Qasyp App's PostgreSQL database.
Alembic is configured at the project root:
alembic/
env.py # async SQLAlchemy setup
versions/ # migration files live here
alembic.ini # points to DATABASE_URL from env
script_location = alembic
sqlalchemy.url = %(DATABASE_URL)s
import asyncio
from logging.config import fileConfig
from sqlalchemy.ext.asyncio import async_engine_from_config
from alembic import context
from app.db.base import Base
from app.core.config import settings
config = context.config
config.set_main_option("sqlalchemy.url", settings.DATABASE_URL)
target_metadata = Base.metadata
def run_migrations_offline():
context.configure(url=settings.DATABASE_URL, target_metadata=target_metadata, literal_binds=True)
with context.begin_transaction():
context.run_migrations()
async def run_migrations_online():
connectable = async_engine_from_config(config.get_section(config.config_ini_section))
async with connectable.connect() as connection:
await connection.run_sync(do_run_migrations)
await connectable.dispose()
def do_run_migrations(connection):
context.configure(connection=connection, target_metadata=target_metadata)
with context.begin_transaction():
context.run_migrations()
if context.is_offline_mode():
run_migrations_offline()