Python 和 MySQLdb : substitution of table resulting in syntax error

标签 python mysql-python

我需要时不时地动态更改表和变量,所以我写了一个这样的python方法:

    selectQ ="""SELECT * FROM  %s WHERE %s = %s;""" 
    self.db.execute(selectQ,(self.table,self.columnSpecName,idKey,))
    return self.db.store_result()

然而,这会导致语法错误异常。我尝试调试它,所以我打印了方法中的变量并手动填充它们,并且成功了。所以我不确定我做错了什么?

是因为我尝试用替代品代替 table 吗?

另外,我如何调试 mysqldb 以便将替换的查询打印为字符串?

最佳答案

DB API 中的参数替换仅适用于值 - 而不是表或字段。您需要对这些使用普通字符串替换:

selectQ ="""SELECT * FROM  %s WHERE %s = %%s;""" % (self.table,self.columnSpecName)
self.db.execute(selectQ,(idKey,))
return self.db.store_result()

请注意,值占位符有一个双 % - 这样它就不会被初始字符串替换留下。

关于Python 和 MySQLdb : substitution of table resulting in syntax error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394291/

相关文章:

Python Mysqldb更新操作带变量

python - 傅里叶变换作为Python中的降维技术

python - 当 ndmin=1 时,numpy.loadtxt 从单行文件加载 float

python - matplotplotlib 轮廓图的 numpy 模拟?

mysql - 编程错误 : 1064 (42000): You have an error in your SQL syntax; Unable to create table using foreign key

python - 如何使用 MySQLdb 不转义字符串

python - 从 MySQL 5.5 升级到 5.7 后查询更频繁地遇到死锁

python - 我无法从数据帧保存到 postgresql

python - 在 Flask 应用程序中开始使用 Celery 时出现 PicklingError

python - MySQLdb 存储过程输出参数不起作用