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)
Run Code Online (Sandbox Code Playgroud)
现在,我如何获得列类型的查询结果 res
其中一个决定:
res._key_cache[ col_name ][0]
Run Code Online (Sandbox Code Playgroud)
你知道别的吗?
我正在寻找一种简单的python方法来比较SQLAlchemy中的列类型和基类型.例如,如果我的列类型是任何长度的VARCHAR,我想将其作为字符串读取.
我可以读取列类型没关系,但我不确定一种简单的方法来验证它的基本类型...如果我可以使用"if isinstance(mycolumn,int)"这样的东西会很好 - 但我是新的到python,不知道这将如何工作.
这是我到目前为止所拥有的:
from sqlalchemy import MetaData
from sqlalchemy import create_engine, Column, Table
engine = create_engine('mysql+mysqldb://user:pass@localhost:3306/mydb', pool_recycle=3600)
meta = MetaData()
meta.bind = engine
meta.reflect()
datatable = meta.tables['my_data_table']
[c.type for c in datatable.columns]
Run Code Online (Sandbox Code Playgroud)
输出:
[INTEGER(display_width=11), DATE(), VARCHAR(length=127), DOUBLE(precision=None, scale=None, asdecimal=True)]
Run Code Online (Sandbox Code Playgroud)
我的最终目的是双重的,首先是因为当我将它加载到我的jQuery jqGrid中时,我希望根据类型格式化输出.第二,我正在慢慢地将非规范化数据表转换为规范化结构,并且希望确保我保持我的类型一致 - (以确保我在前一个表中的数字存储为数字而不是字符串...... )