python - 在字符串变量的情况下,如何在没有显式引号的情况下制作准备好的语句

标签 python mysql

我使用MySQLdb库。当我进行这样的查询时

cursor.execute("SELECT COUNT(*) FROM srcdst WHERE TABLESRC = ?", src)

其中 src 是字符串变量,我收到错误:

TypeError: not all arguments converted during string formatting

如果我这样做,我也会收到错误:

cursor.execute("SELECT COUNT(*) FROM srcdst WHERE TABLESRC = %s" % src)

但是,在这种情况下我没有错误:

cursor.execute("SELECT COUNT(*) FROM srcdst WHERE TABLESRC = '%s'" % src)

但是我不喜欢这个声明的是 %s 周围的显式引号。我想让驱动程序决定变量的类型并隐式执行。否则,在自动查询的情况下,执行所有解析变量类型和“准备”准备好的语句的例程将是一个真正的问题。

编辑

看来我找到了解决办法。正确的语法是:

cursor.execute("SELECT COUNT(*) FROM srcdst WHERE TABLESRC = %s" , (src,))

其中变量 (src) 作为元组提供。

最佳答案

代码中的

'src' 表示您要传递的值而不是问号。如果这是真的,请尝试以下代码。否则忽略

cursor.execute("SELECT COUNT(*) FROM srcdst WHERE TABLESRC = " + src);

关于python - 在字符串变量的情况下,如何在没有显式引号的情况下制作准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26926172/

相关文章:

python - 在 Pillow Python 中压缩后如何打开图像文件?

python - 将字母范围扩展到 Python 中的字符列表

python - set_column 未将颜色格式应用于大型 Excel 文件的列

MySql 使用 CASE 从另一个表中插入子字符串

mysql - 如何复制记录并指定字段值

带有相关查询的 MySQL Having 子句不起作用

python - buildozer(kivy,python) 无法将生成的 apk 复制到 docker 虚拟机上的主目录

python - 为什么我的损失趋于下降,而我的准确度却趋于零?

MySQL 显示平均每天随机记录的整数

mysql - 在淘汰候选人的同时重新分配选票