【发布时间】:2016-11-12 08:00:04
【问题描述】:
环境:Python 3.5.2、MySQL.Connector 2.0.4,在 MariaDB Server 10.1.14 上
为什么准备好的游标返回字节数组中的字符串值,而标准游标返回正常的字符串?
对于同一个实例的同一个调用,我的 Prepared 光标输出:
[(11, bytearray(b'1234567890'), None),
(17, bytearray(b'1234567799'), bytearray(b'abc@outlook.com'))]
虽然 标准 版本提供了所需的输出:
[(11, '1234567890', None),
(17, '1234567799', 'abc@outlook.com')]
标准版代码:
def query_userdb(query, arg):
retVal = None
cnx = mariadb.connect(**DB_CONFIG_USERS)
cursor = cnx.cursor()
cursor.execute(query, arg)
if cursor.rowcount != 0:
retVal = cursor.fetchall()
cnx.commit()
cnx.close()
return retVal
对于 prepared 版本,我只将游标声明更改为
cursor = cnx.cursor(prepared=True)
如何让准备好的游标正确返回字符串?
【问题讨论】:
-
你用的是mysql还是mariadb?
-
ops,忘了说,我使用的是 MariaDB 10.1
-
实际上,我找到了一些相关的文档,可以深入了解问题原因dev.mysql.com/doc/relnotes/connector-python/en/news-2-0-0.html,但现在仍然能够解决它..
标签: python prepared-statement mariadb