1. 程式人生 > >sqlalchemy 表關係之一對多

sqlalchemy 表關係之一對多

session.add(arctire)
session.commit()

測試資料是否插入成功


OK,由上圖可知,資料已成功插入到表中。接下來,我們想通過文章(arcitre)表查詢到使用者名稱(name),先來使用一個比較笨的方法(程式碼如下所示)

arctire = session.query(Arctire).first()user = arctire.idresult = session.query(User).get(user)print(result)
嗯,這個辦法確實能實現我們剛才所說的效果,但太複雜,太low了,有沒有更好的辦法呢?嘿嘿,哪我就不拐彎抹角了,直接來“真格”的!!!


我們刪除模型並從新建立,在從表中定義 relationship
 屬性,如下所示:

author = relationship("User" , backref="arctires")

再插入資料及測試是否成功插入資料,程式碼如上。(在此省略不寫)

然後我們再查詢使用者發表的所有文章資料。(為了方便檢視效果,建議為arctire表新增多條資料。)

user = session.query(User).first()print(user.arctires)
 

OK,沒問題。然後我們再反向查詢文章所對應的作者/使用者

arctire = session.query(Arctire).first()print(arctire.author)



上述程式碼實現了一對多的效果,當然還有其它辦法可以實現。比如在父表、從表中分別定義 relation屬性,也可以達到一對多的效果。在這裡我就不在闡述,大家有興趣可以試一下!