我不是數據庫專家 - 我只是知道基礎,真的。我已經選擇了一個小項目的SQLAlchemy,並且我正在使用聲明性的基本配置,而不是「正常」的方式。這種方式似乎簡單得多。簡單的SQLAlchemy關係如何工作?
但是,在設置我的數據庫模式時,我意識到我不理解某些數據庫關係概念。
如果我之前有過多對一的關係,例如作者的文章(每篇文章只能由一位作者撰寫),我會在我的articles
列中添加一個author_id
字段。但是SQLAlchemy有這個ForeignKey對象,並且有一個與backref kwarg的關係函數,我不知道它有什麼意思。
我很害怕找出與中間表的多對多關係(當我需要關於每個關係的附加數據時)。
有人能爲我揭開這個祕密嗎?現在我正在設置允許我的應用程序使用openID auth。所以,我有這樣的:
from __init__ import Base
from sqlalchemy.schema import Column
from sqlalchemy.types import Integer, String
class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String, unique=True)
email = Column(String)
password = Column(String)
salt = Column(String)
class OpenID(Base):
__tablename__ = 'openid'
url = Column(String, primary_key=True)
user_id = #?
我認爲?
應該Column(Integer, ForeignKey('users.id'))
更換,但我不知道 - 做我需要把openids = relationship("OpenID", backref="users")
在用戶類?爲什麼?它有什麼作用?什麼是backref?
很好的答案,謝謝。我有點驚訝,它花了這麼長時間,沒有人回答...似乎很多人會知道的。哦,好:) – 2010-05-27 04:33:37
這是一個很好的答案,很清楚。我也喜歡自我記錄的代碼。爲此,從0.5.1開始,SQLAlchemy提供了'backref'的替代方法,它是['back_populates'](http://docs.sqlalchemy.org/en/latest/orm/relationship_api.html#sqlalchemy.orm。 relationship.params.back_populates)。該文檔提供了進一步的說明和示例:http://docs.sqlalchemy.org/en/latest/orm/backref.html#relationships- backref – iled 2016-01-21 16:50:18