2010-02-13 2 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 из типов, является немного более разнообразным на основе DBAPI:

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

может быть, мы будем смотреть на добавление этого вида метаданных более адр к ResultProxy.

+0

Верно ли, что вам нужно выполнить поиск конкретного поставщика, чтобы получить фактические типы данных? например в Postgres, 'TYPES [res.context.cursor.description.type_code]', где 'TYPES' является отображением [OID типа Postgres] (http://initd.org/psycopg/docs/advanced.html#type- литье из--SQL-на-питон)? – z0r

+0

@ z0r в psycopg2, эти значения могут быть самими объектами. Объекты psycopg2, которые, я думаю, оценивают как целые числа или что-то в этом роде, попробуйте. – zzzeek

Смежные вопросы