Sqlalchemy, attitude versus relationship

In some sqlalchemy tutorials, relation function used to define sql relationships. eg:

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

But some articles suggesting the relationship , ie function:

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

My question is: what are the differences between the two functions and at least the reason to use them.

thanks in advance

+6
source share
1 answer

According to docs , they are synonyms:

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

Synonym for relationship ().

And, in fact:

Changed in version 0.6: relation () was renamed from the previous name relation ().

So, better use relationship() , as this is the most recent name of the two.

+10
source

Source: https://habr.com/ru/post/953000/


All Articles