首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位0表示为'\x00‘

位0表示为'\x00‘
EN

Stack Overflow用户
提问于 2016-01-21 07:52:51
回答 2查看 1.3K关注 0票数 2

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

使用此查询: query = text( "SELECT * FROM %s“其中”% "aTable“%s=%s”和“% ("done",0) )

代码语言:javascript
复制
    result = engine.execute(query)
    row = result.fetchone()

当我调用打印行‘’done‘时,我得到了'\x00'

对于表I的生成,sqlacodegen生成 as 列如下所示:

代码语言:javascript
复制
Column('done', BIT(1), nullable=False),

我是不是缺少了SqlAlchemy中的一些配置?我不想在任何地方将十六进制转换为int,我要使用的是位列。

编辑,所以问题不在于sqlalchemy,而应该归咎于pymysql。

EN

回答 2

Stack Overflow用户

发布于 2016-01-21 09:44:38

试着看看Python文档的这一章。

但是,在您的例子中,可能有一些类似于奥德的东西可以转换您的十六进制:

代码语言:javascript
复制
>>> a = b'\x00' 
>>> a
'\x00'
>>> str(a)
'\x00'
>>> ord(a)
0
>>> ord('\x5f')
95
票数 2
EN

Stack Overflow用户

发布于 2016-01-21 10:07:23

解决方案是重写位列转换器并将其传递给pyMysql的连接:

代码语言:javascript
复制
from pymysql import converters
converions = converters.conversions
converions[FIELD_TYPE.BIT] = lambda x: False if '\x00' else True
return pymysql.connect(
        conv=converions,
        ...
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34918139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档