2011-03-18 14 views
8

SQLAlchemy ORM Tutorial से:प्रयोग की "एलियास" SQLAlchemy ORM में

आप नाम लेबल का उपयोग कर) नियंत्रित कर सकते हैं (अदिश विशेषताओं के लिए निर्माण और वर्ग निर्माणों के लिए एलियास:

>>> from sqlalchemy.orm import aliased 
>>> user_alias = aliased(User, name='user_alias') 
>>> for row in session.query(user_alias, user_alias.name.label('name_label')).all(): 
... print row.user_alias, row.name_label 

ऐसा लगता है कि सादे वर्ग-वाद्य यंत्रों की तुलना में बहुत अधिक टाइपिंग और बहुत कम पठनीय लगता है:

>>> for row in session.query(User, User.name).all(): 
... print row.User, row.name 

लेकिन यह एक कारण के लिए मौजूद होना चाहिए। इसका उपयोग कैसे किया जाना चाहिए? कुछ अच्छे उपयोग के मामले क्या हैं?

उत्तर

17

aliased() या alias() इस्तेमाल किया जब भी आप ज्यादातर जब (स्वयं मिलती है, के साथ या अतिरिक्त तालिकाओं के बिना) एक प्रश्न में एक ही मेज एक बार से अधिक का उपयोग करते हुए, एसक्यूएल में SELECT ... FROM my_table my_table_alias ... निर्माण उपयोग करने की आवश्यकता कर रहे हैं। आपको कुछ मामलों में उपनामों को उपनाम करने की भी आवश्यकता है।

प्रलेखन में एक उदाहरण है: http://www.sqlalchemy.org/docs/orm/query.html?highlight=aliased#sqlalchemy.orm.util.AliasedClass