簡體   English   中英

如何訪問SQLAlchemy自動映射?

[英]How to get access to SQLAlchemy automap?

我正在使用SQLAlchemy automap 當我描述結構聲明式時,我有backref屬性:

上面的配置在User上建立了一個名為User.addressesAddress對象的集合。

但是現在有了自動映射,我的代碼如下所示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM