在数据库表中,有一个列定义为:

使用此查询: query = text( "SELECT * FROM %s“其中”% "aTable“%s=%s”和“% ("done",0) )
result = engine.execute(query)
row = result.fetchone()当我调用打印行‘’done‘时,我得到了'\x00'。
对于表I的生成,sqlacodegen生成 as 列如下所示:
Column('done', BIT(1), nullable=False),我是不是缺少了SqlAlchemy中的一些配置?我不想在任何地方将十六进制转换为int,我要使用的是位列。
编辑,所以问题不在于sqlalchemy,而应该归咎于pymysql。
发布于 2016-01-21 09:44:38
发布于 2016-01-21 10:07:23
解决方案是重写位列转换器并将其传递给pyMysql的连接:
from pymysql import converters
converions = converters.conversions
converions[FIELD_TYPE.BIT] = lambda x: False if '\x00' else True
return pymysql.connect(
conv=converions,
...
)https://stackoverflow.com/questions/34918139
复制相似问题