Sqlalchemy,关系与关系

pyl*_*ver 6 python sqlalchemy

在一些sqlalchemy教程中,relation函数用于定义sql-relationships.像这样:

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")
Run Code Online (Sandbox Code Playgroud)

但是有些文章提供了这个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))
Run Code Online (Sandbox Code Playgroud)

我的问题是:这两个功能之间的区别是什么,至少是使用每个功能的原因.

谢谢你的提前

ale*_*cxe 12

根据文档,它们是同义词:

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

relationship()的同义词.

实际上:

在版本0.6中更改:relationship()已从其先前的名称relation()重命名.

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