【发布时间】:2017-11-19 17:17:21
【问题描述】:
我正在运行这段代码
def details(self, dbsettings, payload):
res = None
with UseDatabase(dbsettings) as db:
sql = "select * from %(tablename)s where userid = %(userid)s"
result = db.run_query_vals(sql, payload)
res = result.fetchall()
return res
但出现错误
SQLError: 1064 (42000): 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 ''statuser' where userid = '14'' 附近使用正确的语法
传递的参数是:
sql = "select * from %(tablename)s where userid = %(userid)s"
payload = {'tablename' : 'statuser', 'userid' : 14}
据我了解,传递给 MySQL 的查询类似于
select * from 'statuser' where userid = '14'
这是我得到错误的地方;表名不应该用引号引起来。如何在不带引号的情况下包含名称/使它们成为反引号?
(我不想硬编码表名 - 这是一个变量,在类创建期间根据不同的参数进行初始化)。这里有什么帮助吗?
【问题讨论】: