gpt4 book ai didi

python - Python 中的 C func 中的浮点变量格式不正确

转载 作者:行者123 更新时间:2023-11-29 15:16:42 24 4
gpt4 key购买 nike

我不确定这是否是正确的提问地点。但我们使用一个名为 umysql 的 python 库。我们正在将 python2 升级到 python3,因此已经迁移到 umysql3。umysql 是一个 C/C++ mysql 驱动程序。

如果运行此代码:

import umysql3
import dsnparse

conn = umysql3.Connection()
conn.settimeout(1)
conn.connect(
#connection details
)

conn.query('''
select %s, %s, %s;
''', (51.4827, -3.1808, 123))

您将收到此错误:

Traceback (most recent call last): File "test-umysql.py", line 15, in ''', (51.4827, -3.1808, 123)) umysql.SQLError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\0\0\01\0\0, -\0\0\03\0\0, 123' at line 1")

我不知道浮点变量发生了什么,而且我对 python 调用 C 函数有点不了解。
我想知道是否有人可以给我一个指示,或者一个可以研究的想法,关于这里可能发生的事情。

干杯

最佳答案

如果不输入库的具体信息,您似乎使用了错误的格式说明符: float 通常用 %f 指定。

如果它一直失败,您可能需要考虑安全性较低但更清晰的方式自行格式化查询,然后再将其交给umysql

query = "select {:f}, {:f}, {:f}".format(51.4827, -3.1808, 123)
# 'select 51.482700, -3.180800, 123.000000'

编辑:简要查看单元测试并没有发现任何转义语法受到支持的证据。有些测试会自行进行转义(请参阅 here )

for i in range(10):
self.assertEquals((1, 0), cnn.query("insert into tbltest (test_id, test_string) values (%d, 'test%d')" % (i, i)))

关于python - Python 中的 C func 中的浮点变量格式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59649135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com