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

2024-10-03 02:42:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 字符串fromsrc类型executecount错误情况
3条回答

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

你知道吗游标.执行(“SELECT COUNT(*)FROM srcdst WHERE TABLESRC=%s”,(src))

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

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

那就试试这个

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

相关问题 更多 >