我使用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”表示要传递的值而不是问号。如果是这样,请尝试以下代码。否则忽略

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

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

10-13 04:22