0

I have an existing database with tables created by SQLAlchemy. I want to add Alembic to help me with migration. But when I execute flask db migrate, Alembic want to remove all existing tables:

INFO  [alembic.autogenerate.compare] Detected removed table 'order'
INFO  [alembic.autogenerate.compare] Detected removed table 'manager'

Seems that Alembic don't see my Models. These are on separate package with this type of declaration :


@as_declarative()
class Base:
    id: Mapped[int] = mapped_column(primary_key=True)
    [...]


class Manager(Base):
    __tablename__ = 'manager'
    __table_args__ = {'extend_existing': True}

    [...]

There is my app.py file :

from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from my_custom_package import settings

app = Flask(__name__)
app.config.from_object(settings)
db = SQLAlchemy(app)

from my_custom_package.models import Base, Order, Manager

migrate = Migrate(app, db)

I unsuccessfully try to add somethings like this into env.py :

from msPytDependencies.models import Base, Manager, Order
target_metadata = Base.metadata
// target_metadata = [Manager.metadata, Order.metadata]

When I simply try this, all seems to be OK :

flask shell
---
>>> from my_custom_package.models import Base, Manager, Order
>>> len(Base.metadata.tables)
2
>>> Base.metadata.tables
FacadeDict({'manager': Table('manager', MetaData(), Column( [...]

Lot of topics talks about similar problems. But I can't manage to resolve my problem.

Tomy137
  • 91
  • 9

0 Answers0