Ich habe eine Kolben-App, die Flask-SQLAlchemy verwendet, um auf MySQL zuzugreifen. Jetzt möchte ich das Datenmodell in der gleichen App umgestalten, also habe ich eine neue Versionsmodelldatei erstellt, aber einige Tabellen sollten den gleichen Namen wie die alte Tabelle haben.ist es möglich zu vermeiden Tabellenname Konflikt bei der Verwendung von zwei Datenmodell in Flask-sqlalchemy
oldmodel.py
class TableA(db.Model):
__tablename__ = 'TableA'
...
newmodel.py
class TableA(db.Model):
__tablename__ = 'TableA'
...
ich eine Funktion schreiben, ist die Idee, Daten von alten MetaDaten abzufragen dann durch neue Metadaten neue Datenbank schreiben nach einigen Spalten Daten Manipulation, aber es wird offensichtlich gleichen Tabellennamen Konflikt in Flask-SQLAlchemy. die Fehlermeldung
sqlalchemy.exc.InvalidRequestError: Table 'TableA' is already defined for this MetaData instance. Specify 'extend_existing=True' to redefine options and columns on an existing Table object.
Ich will nicht verwenden, um auf alte Datenbank Flask-Migration, aber neue Datenbank zu erstellen. Ich habe auch versucht, __bind_key__
, scheint es in einer neuen Tabelle zu arbeiten, aber nicht in bestehenden Tabelle, die bereits Daten hatte.
ist es möglich, dies zu vermeiden, um zwei Versionen von DataModel in derselben App zu verwenden? oder andere Vorgehensweise?