2010-02-13 4 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

실제 데이터 형식을 얻으려면 공급 업체별 조회를 수행해야합니까? 예 : 'TYPES'는 [Postgres type OIDs]의 매핑입니다 (http://initd.org/psycopg/docs/advanced.html#type-code). cast-from-sql-to-python)? psycopg2에서 – z0r

+0

@ z0r 인 경우,이 값은 객체 자체 일 수 있습니다. psycopg2의 객체는 정수 또는 그와 비슷한 것으로 평가한다고 생각합니다. 사용해보십시오. – zzzeek