私はsqlalchemyが初めてです。チュートリアルに従って、mysql db からの関係を持つ既存の db の自動マップを作成しました
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
の列の1 つにマップされます。しかし、クエリと結合を使用しようとするtable1
とtable2
、「外部キー関係が見つかりません」というエラーが報告されます。私はこれら 2 つのテーブルの関係を知っているので、クラス インスタンスが作成された後にこの関係を宣言する方法はありますか? または、クエリ関数でこの関係を明示的に伝える方法はありますか? ありがとう!