【发布时间】:2020-04-23 00:59:19
【问题描述】:
我正在构建一个连接到 PostgreSQL 数据库的 Discord 机器人(使用 discord.py)。
我有多个表,所有表名都存储在名为TableNames 的字符串列表中。
当我直接使用表名时,像这样:
await self.bot.ARC.execute("UPDATE utah SET utah = $1 WHERE user_id = $2", True, message.author.id)
一切正常。
但是当我尝试将表名设置为变量时,像这样:
wait self.bot.ARC.execute("UPDATE $1 SET $2 = True WHERE user_id = $3", 'utah', 'utah', message.author.id)
我收到一条错误消息,提示我在 $1 上有语法错误。
我可以将表名设置为变量而不出现语法错误吗?如果是这样,我该怎么做?
【问题讨论】:
-
您不能将表名作为查询参数传递,因为您的 RDBMS 必须能够在执行之前从查询字符串中准备查询。
标签: python sql postgresql discord.py