小编典典

Python和MySQLdb:替换表会导致语法错误

python

我需要不时动态地更改表和变量,因此我编写了这样的python方法:

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

但是,这导致语法错误异常。我尝试对其进行调试,因此我将变量打印在方法中,然后手动将其填充,并且可以正常工作。所以我不确定我在做什么错?

是因为我尝试使用表的替代品吗?

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


阅读 152

收藏
2020-12-20

共1个答案

小编典典

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

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

请注意,值占位符有一个double-%这是初始字符串替换将其保留的位置。

2020-12-20