[英]How to view relationships and backreferences generated by SQLAlchemy Automap
[英]How to get access to SQLAlchemy automap?
我正在使用SQLAlchemy automap 。 當我描述結構聲明式時,我有backref屬性:
上面的配置在
User
上建立了一個名為User.addresses
的Address
對象的集合。
但是現在有了自動映射,我的代碼如下所示:
engine = create_engine('sqlite:///sql_test.db', echo=True)
Session = sessionmaker(bind=engine)
sess = Session()
Base = automap_base()
Base.prepare(engine, reflect=True)
User = Base.classes.Users
addresses = Base.classes.addresses
answer = sess.query(User).filter(User.id==1).first()
print('type:', type(answer)) # will print: class User
但是我如何在這里訪問addresses
? 我試過了: answer.addresses
等等,但是它不起作用。
用戶:
CREATE TABLE "Users"(
"id" Integer PRIMARY KEY,
"name" Text,
CONSTRAINT "unique_id" UNIQUE ( "id" ) )
地址:
CREATE TABLE "addresses"(
"id" Integer PRIMARY KEY,
"email" Text,
"user_id" Integer,
CONSTRAINT "lnk_Users_addresses" FOREIGN KEY ( "user_id" ) REFERENCES "Users"( "id" ),
CONSTRAINT "unique_id" UNIQUE ( "id" ) )
集合關系的默認命名方案是:
return referred_cls.__name__.lower() + "_collection"
因此,假設您有一個模型類addresses
,那么您的關系應該是
User.addresses_collection
如果您希望更改此行為,請將您自己的實現作為name_for_collection_relationship=
關鍵字參數傳遞給AutomapBase.prepare()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.