2010-08-26 11 views
14

में चयन मैं इस तरह कुछ करना चाहता हूँ:के रूप में SQLAlchemy

query = select([users_table.c.username, users_table.c.userid]) 

मैं चयन x के रूप में करने के लिए कैसे करते हैं:

select username, userid, 'user' as new_column from users_table. 

तालिका के कॉलम में इस प्रकार SQLAlchemy का उपयोग कर चुना जा सकता है Sqlalchemy में क्वेरी के लिए col_x?

+0

मुझे यकीन नहीं है कि आप कच्चे एसक्यूएल में प्रवेश किए बिना कॉलम नामों के उपनाम कर सकते हैं। तुमने ऐसा क्यों करना चाहोगे? –

+0

मैं इस क्वेरी का एक और प्रश्न पूछना चाहता हूं जिसमें नाम 'new_column' नाम वाला कॉलम है – user401574

+0

यह प्रश्न [Google पर क्वेरी SQLAlchemy में कॉलम का नाम बदलें] के लिए शीर्ष परिणाम के रूप में दिखाया गया है [https://www.google .com/search? q = नाम + कॉलम + + क्वेरी + sqlalchemy में) लेकिन वास्तव में उस प्रश्न से नहीं पूछता है। मौजूदा कॉलम का नाम बदलने के बजाय प्रश्न का शाब्दिक स्तंभ बनाने के साथ और अधिक लगता है। शीर्ष वोट दिया गया जवाब, Google क्वेरी का जवाब दें लेकिन लेखकों के प्रश्न का सबसे अच्छा अनुमान नहीं है। जो काम करने वाले दस्तावेज़ों में से किसी भी लिंक के साथ संयुक्त नहीं होते हैं और एपीआई बदलते हैं, मुझे लगता है कि यह किसी भी भ्रम को रोकने के लिए बेहतर संग्रहित/बंद है। –

उत्तर

0
+0

['उर्फ()'] (http://docs.sqlalchemy.org/en/latest/core/selectable.html?highlight=alias#sqlalchemy.sql.expression.alias) जहां तक ​​मैं कह सकता हूं अलियासिंग के लिए है सारणी, सबक्वायरी इत्यादि जैसे खंडों से '(उदाहरण:' बार के रूप में foo से)। [.label ('new_name')] का उपयोग करके स्तंभ, समेकन आदि जैसे चयन खंडों के लिए (http://docs.sqlalchemy.org/en/latest/core/metadata.html?highlight=label#sqlalchemy.schema.Column। लेबल) जैसा ऊपर बताया गया है उत्तर –

3

शायद literal_column? वास्तव में मैंने कहा जाना चाहिए था "शाब्दिक":

query = select([users_table.c.username, users_table.c.userid, literal_column("user", type_=Unicode).label('new_column')]) 

http://www.sqlalchemy.org/docs/reference/sqlalchemy/expressions.html#sqlalchemy.sql.expression.literal_column

संपादित देखें

query = select([users_table.c.username, users_table.c.userid, literal("user", type_=Unicode).label('new_column')]) 
+3

literal_column() यहां अधिक उपयुक्त है जब तक कि उपयोगकर्ता उत्पन्न होने के लिए बाध्य पैरामीटर नहीं चाहता। तो आपका पहला जवाब सही है। – zzzeek

26

उपयोग करें: users_table.c.userid.label('NewColumn')

अर्थात,

query = select([users_table.c.username, users_table.c.userid.label('NewColumn')]) 

का मूल्यांकन:

SELECT username , userid as NewColumn From MyTable;