2010-02-13 18 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) 

Ve sonuçlanır, nasıl sorgu sonucu kararlarının resSQLAlchemy alma sütun veri türleri artık

biri sütunları tür alabilirsiniz:

res._key_cache[ col_name ][0] 

Başka bir şey biliyor musunuz?

cevap

8

sen derdim:

(derlenmiş) ifadesi sonucu üzerindedir
types = [col.type for col in q.columns] 

Eğer kazma gibi hissediyorum çok olursa:

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

sen türlerinin dbapi sürümünü isterseniz hangi

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

belki daha Direc meta bu tür ekleyerek içine bakacağız: biraz daha değişik dbapi dayanmaktadır ResultProxy'a tly.

+0

Gerçek veri türlerini almak için satıcıya özel bir arama yapmanız gerektiği doğru mu? Örneğin. Postgres, 'TYPES [Res.context.cursor.description.type_code]', 'TYPES' [Postgres type OIDs] 'in bir haritasıdır (http://initd.org/psycopg/docs/advanced.html#type- döküm-sql-to-python)? Psycopg2 içinde – z0r

+0

@ z0r, ​​bu değerler nesnelerin kendileri olabilir. psycopg2'nin nesneleri tamsayı veya bunun gibi bir şey olarak değerlendirdiğimi düşünüyorum. – zzzeek