我使用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/