10

在一些 sqlalchemy 教程中,relation函数用于定义 sql 关系。像这样:

class Movie(DeclarativeBase):
    __tablename__ = "movies"

    movie_id = Column(Integer, primary_key=True)
    title = Column(String(100), nullable=False)
    description = Column(Text, nullable=True)
    genre_id = Column(Integer, ForeignKey('genres.genre_id'))
    genre = relation('Genre', backref='movies')
    release_date = Column(Date, nullable=True)

class Director(DeclarativeBase):
    __tablename__ = "directors"

    director_id = Column(Integer, primary_key=True)
    title = Column(String(100), nullable=False)
    movies = relation(Movie, secondary=movie_directors_table, backref="directors")

但是一些提供该relationship功能的文章,即:

class Address(Base):
     __tablename__ = 'addresses'
     id = Column(Integer, primary_key=True)
     email_address = Column(String, nullable=False)
     user_id = Column(Integer, ForeignKey('users.id'))
     user = relationship("User", backref=backref('addresses', order_by=id))

我的问题是:这两个功能之间有什么区别,至少有一个使用每个功能的理由。

谢谢是提前

4

1 回答 1

15

根据docs,它们是同义词:

sqlalchemy.orm.relation(*arg, **kw)

关系()的同义词。

而且,实际上:

在 0.6 版中更改:relationship() 从其以前的名称relation() 重命名。

因此,更好地使用它,relationship()因为它是两者中最“新鲜”的名称。

于 2013-09-02T17:56:22.243 回答