Python sqlite3在简单的Select查询中出现操作错误

2024-10-02 12:33:36 发布

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

我在sqlite(pythonsqlite3)中的一个非常简单的查询有一个奇怪的行为

这是一个有效的查询

cursor = self.con.cursor()
cursor.execute("SELECT * FROM vpro1 ORDER BY :orderby DESC LIMIT 1", {"table": "vpro1", "orderby": self.unit_timestamp})

但这一次给了我一个错误

^{pr2}$

例外情况是

sqlite3.OperationalError: near ":table": syntax error

因此,当我尝试使用qmark作为表名时,它会抛出一个错误,如果我在查询中硬编码它,它就起作用了:orderby可以使用我使用的任何东西(qmark,hardcoded,named)。。。与qmark样式的行为相同(?)?,? 带元组)

谢谢你的建议!在


Tags: fromselfexecutesqliteby错误tableorder
1条回答
网友
1楼 · 发布于 2024-10-02 12:33:36

不能使用DB API来完成表名。我不知道这是什么原因,但我以前也遇到过同样的问题。它在SQLite或MySQL中不起作用,可能还有其他的。在

有关解决方法,请参见Donald Miner对另一个问题的回答。在

def scrub(table_name):
    return ''.join( chr for chr in table_name if chr.isalnum() )

scrub('); drop tables  ')  # returns 'droptables'

然后将其作为格式字符串传入。在

^{pr2}$

相关问题 更多 >

    热门问题