我想將兩個MySQL數據庫添加到我的Flask應用程序中。不幸的是,這些數據庫幾乎相同。 它們具有相同的表格和列名稱,但數據不同。將相同的SQLAlchemy表附加到具有不同綁定的兩個模型
我使用SQLALCHEMY_BINDS我config.py
SQLALCHEMY_BINDS = {
'old': 'mysql://[OLD_DB_HERE]',
'new': 'mysql://[NEW_DB_HERE]'
}
然後在我的models.py
class CallOld(db.Model):
__bind_key__ = 'old'
__table__ = db.Model.metadata.tables['ConferenceCall2']
class CallNew(db.Model):
__bind_key__ = 'new'
__table__ = db.Model.metadata.tables['ConferenceCall2']
的問題是,當我叫兩個表的查詢,我得到了相同的結果。
例如,CallOld.query.with_entities(CallOld.TenantName.distinct()).all()
和CallNew.query.with_entities(CallNew.TenantName.distinct()).all()
返回相同。
有趣的是,輸出是總是從兩個模型類的第二個。顯然第二類(CallNew
在這種情況下)會覆蓋第一類(CallOld
)。
如何將相同的表定義附加到具有不同綁定的兩個模型?
http://stackoverflow.com/questions/7877196/flask-sqlalchemy-create-several-tables-with-all-fields-identical,你有一個原因,你必須嘗試使用相同的'表'對象,即使這些模型是針對不同的數據庫的。使用mixin可能會馬上解決這個問題。 –
這些數據庫已經存在,我只需要將我的Flask應用程序連接到它們。第一個是舊的,第二個是新的。但是他們的結構和表格名稱是相同的。這就是爲什麼我使用相同的表名。無論如何,我會檢查混合。希望這會幫助我解決問題。 – Galil