在一些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")
但有些文章提供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))
我的问题是:这两个功能之间有什么区别,至少是使用每个功能的原因。
谢谢是提前
答案 0 :(得分:12)
根据docs,它们是同义词:
sqlalchemy.orm.relation(*arg, **kw)
relationship()的同义词。
而且,实际上:
版本0.6中已更改:relationship()已从之前的版本重命名 name relation()。
因此,最好使用relationship()
,因为它是两者中最“新鲜”的名称。