sqlalchemy 表關係之一對多
阿新 • • 發佈:2019-02-18
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屬性,也可以達到一對多的效果。在這裡我就不在闡述,大家有興趣可以試一下!
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屬性,也可以達到一對多的效果。在這裡我就不在闡述,大家有興趣可以試一下!