2013-09-02 15 views
6

W niektórych samouczkach sqlalchemy, funkcja relation służy do definiowania relacji sql. tak:Sqlalchemy, relacja vs relacja

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") 

Ale niektóre teksty oferując relationship funkcji, tj:

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)) 

Moje pytanie brzmi: jaka jest różnica między tymi dwoma funkcjami, a przynajmniej powód, aby korzystać z każdego z nich.

Dzięki jest zaliczka

Odpowiedz

10

Według docs, są synonimami:

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

Synonim relacji().

I rzeczywiście:

Zmieniono w wersji 0.6: zależność() została zmieniona od poprzedniego nazwa związku().

Lepiej więc użyć relationship(), ponieważ jest to najbardziej "świeża" nazwa tych dwóch.

Powiązane problemy