我是新來的sqlalchemy。我按照教程創建從一個MySQL關係的現有數據庫的自動映射數據庫是否可以在通過SqlAlchemy中的automap創建類之後聲明關係
from sqlalchemy import create_engine, MetaData, Column, Table, ForeignKey
from sqlalchemy.ext.automap import automap_base, generate_relationship
from sqlalchemy.orm import relationship, backref
from config import constr, mytables
def _gen_relationship(base, direction, return_fn,
attrname, local_cls, refferred_cls, **kw):
return generate_relationship(base, direction, return_fn, attrname, local_cls, refferred_cls, **kw)
engine = create_engine(constr)
metadata = MetaData()
metadata.reflect(engine, only=mytables)
Base = automap_base(metadata=metadata)
Base.prepare(engine, reflect=True, generate_relationship=_gen_relationship)
Tableclass1 = Base.classes.table1
Tableclass2 = Base.classes.table2
Table2.ID
映射到table1
的一列。但是當我嘗試使用查詢並加入table1
和table2
時,它報告錯誤,指出「無法找到任何外鍵關係」。既然我知道這兩個表的關係,那麼在創建類實例之後,我有沒有辦法聲明這種關係呢?或者有沒有辦法明確告訴查詢函數中的這種關係? 謝謝!