2013-09-02 10 views
6

कुछ स्क्लेक्लेमी ट्यूटोरियल में, relation फ़ंक्शन एसक्यूएल-रिश्तों को परिभाषित करने के लिए उपयोग किया जाता है।स्क्लेल्चेमी, संबंध बनाम संबंध

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

मेरे सवाल यह है: उन दो कार्यों के बीच मतभेद है, और कम से कम एक से हर एक का उपयोग करने के कारण क्या।

अग्रिम धन्यवाद है

उत्तर

10

docs के अनुसार, वे समानार्थक शब्द हैं:

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

संबंध के लिए एक पर्याय()।

और, वास्तव में:

संस्करण 0.6 में परिवर्तित: रिश्ते() अपने पिछले नाम संबंध से नाम दिया गया था()।

तो, बेहतर इस्तेमाल relationship() के रूप में यह दो से ज्यादातर "फ्रेश" नाम है।

संबंधित मुद्दे