相关疑难解决方法(0)

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)
Run Code Online (Sandbox Code Playgroud)

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

其中一个决定:

res._key_cache[ col_name ][0]
Run Code Online (Sandbox Code Playgroud)

你知道别的吗?

python sqlalchemy

11
推荐指数
1
解决办法
7069
查看次数

在SQLAlchemy列类型和python数据类型之间轻松转换?

我正在寻找一种简单的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中时,我希望根据类型格式化输出.第二,我正在慢慢地将非规范化数据表转换为规范化结构,并且希望确保我保持我的类型一致 - (以确保我在前一个表中的数字存储为数字而不是字符串...... )

python sqlalchemy

7
推荐指数
3
解决办法
7665
查看次数

标签 统计

python ×2

sqlalchemy ×2