Estoy tratando de conectar la biblioteca de alembic a las bases de datos y las bibliotecas de sqlalchemy . Como guía, uso este enlace de ejemplo.
Mi archivo de proyectos:
db.py
from databases import Database from sqlalchemy import MetaData, create_engine DATABASE_URL = "postgresql://....@localhost:5432/db" engine = create_engine(DATABASE_URL) metadata = MetaData() database = Database(DATABASE_URL)modelos.py
from sqlalchemy import Table, Column, Integer, String, DateTime from sqlalchemy.sql import func from db import metadata notes = Table( "notes", metadata, Column("id", Integer, primary_key=True), Column("title", String(50)), Column("description", String(50)), Column("created_date", DateTime, default=func.now(), nullable=False), )env.py (configuración de alambique)
from db import DATABASE_URL, metadata .... #add new target_metadata = metadata ... #change def run_migrations_online(): config.set_main_option('sqlalchemy.url', str(DATABASE_URL)) connectable = engine_from_config( config.get_section(config.config_ini_section), prefix="sqlalchemy.", poolclass=pool.NullPool, )cuando corro
alembic revision --autogenerate -m 'Add notest table'se crea el nuevo archivo en migraciones/versiones este contexto
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### pass # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### pass # ### end Alembic commands ###Supongo que puede estar relacionado con el uso de la variable target_metadata = metadata. Parece estar todo de acuerdo a las instrucciones, pero las migraciones no funcionan como se esperaba.
Si alguien tiene un problema similar. Todo lo que tiene que hacer es importar las tablas de models.py al archivo env.py antes del objeto de metadata .
env.py
... from models.notes import notes from db import DATABASE_URL, metadata ...