2013-09-02 13 views
6

In einigen sqlalchemy Tutorials, relation Funktion verwendet, um SQL-Beziehungen zu definieren. dies wie:Sqlalchemy, Beziehung vs Beziehung

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

Aber einige Artikel bietet die relationship Funktion, das heißt:

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

Meine Frage ist: Was sind die Unterschiede zwischen diesen beiden Funktionen ist, und zumindest einen Grund, sich zu verwenden.

Dank ist Voraus

Antwort

10

Nach docs sie Synonyme sind:

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

Ein Synonym für Beziehung().

Und tatsächlich:

in Version geändert 0,6: Beziehung() aus seiner vorherigen Namen Beziehung umbenannt wurde().

Also, besser verwenden Sie relationship(), da es der "frisch" Name der beiden ist.

Verwandte Themen