SQLAlchemy获取查询结果的列数据类型

时间:2010-02-13 15:36:25

标签: python sqlalchemy

from sqlalchemy import create_engine, MetaData, ForeignKey

engine = create_engine("mysql://user:passwd@localhost/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)

现在,我如何获得列类型的查询结果res

决定之一:

res._key_cache[ col_name ][0]

你知道别的吗?

1 个答案:

答案 0 :(得分:11)

你会说:

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