2010-02-13 9 views
8
from sqlalchemy import create_engine, MetaData, ForeignKey 

engine = create_engine("mysql://user:[email protected]/shema", echo=False) 
meta = MetaData(engine, True) 
conn = engine.connect() 

tb_list = meta.tables["tb_list"] 
tb_data = meta.tables["tb_data"] 

tb_list.c.i_data.append_foreign_key(ForeignKey(tb_data.c.i_id)) 

q = tb_list.outerjoin(tb_data).select() 

res = conn.execute(q) 

और परिणाम अब, मैं कैसे क्वेरी परिणाम resSQLAlchemy हो रही स्तंभ डेटा क्वेरी के प्रकार

निर्णय में से एक के कॉलम प्रकार प्राप्त कर सकते हैं:

res._key_cache[ col_name ][0] 

आप कुछ और पता है?

उत्तर

8

आप कहेंगे:

types = [col.type for col in q.columns] 

(संकलित) बयान परिणाम पर है आप खुदाई की तरह महसूस भी करता है, तो:

types = [col.type for col in res.context.compiled.statement.columns] 

आप प्रकार के DBAPI संस्करण चाहते हैं जो

types = [elem[1] for elem in res.cursor.description] 

शायद हम मेटाडाटा अधिक निदेशक के इस प्रकार जोड़ने पर ध्यान देंगे: एक छोटे से अधिक विविध DBAPI पर आधारित है ResultProxy पर टाइल करें।

+0

क्या यह सच है कि आपको वास्तविक डेटा प्रकार प्राप्त करने के लिए विक्रेता-विशिष्ट लुकअप करने की आवश्यकता है? जैसे पोस्टग्रेज़ में, 'टाइप्स [res.context.cursor.description.type_code]', जहां 'टायपस '[पोस्टग्रेस टाइप ओआईडी] का मैपिंग है (http://initd.org/psycopg/docs/advanced.html#type- कास्टिंग-एसक्यूएल करने वाली अजगर से)? Psycopg2 में – z0r

+0

@ z0r, ​​वे मान स्वयं ऑब्जेक्ट्स हो सकते हैं। psycopg2 की ऑब्जेक्ट्स मुझे लगता है कि पूर्णांक के रूप में मूल्यांकन करें या ऐसा कुछ, इसे आज़माएं। – zzzeek

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