10

一部の sqlalchemy チュートリアルでは、relationsql-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))

私の質問は、これら 2 つの関数の違いと、少なくともそれぞれを使用する理由です。

よろしくお願いします

4

1 に答える 1

15

docsによると、それらは同義語です。

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

Relationship() のシノニム。

そして、実際には:

バージョン 0.6 で変更: Relationship() は、以前の名前である Relationship() から名前が変更されました。

したがって、relationship()2 つの中で最も「新鮮な」名前であるため、より適切に使用してください。

于 2013-09-02T17:56:22.243 に答える