如何不让pgdb加引号

2024-09-28 19:04:05 发布

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

我正在做一个SQL接口,但是字符串格式有问题。我要做的是一个SQLINSERT INTO table_name语句。当我现在使用参数化insertion时,表名周围会出现不需要的引号。代码如下:

    query = "INSERT INTO %(table)s VALUES %(vals)s;"

    self.cur.execute(query, params)

结果是:

ERROR:  syntax error at or near "'books'"
LINE 1: INSERT INTO 'books' VALUES 'hej, hej, hej, hej';

如您所见,书籍周围有引号,导致语法错误。你知道吗

我试图找到这方面的信息,但没有运气。我怎样才能解决这个问题?你知道吗


Tags: 字符串namesql参数格式table语句query
1条回答
网友
1楼 · 发布于 2024-09-28 19:04:05

不能将execute参数用作表名或列名。它们只允许用于值。你知道吗

必须先格式化SQL语句:

query = "INSERT INTO {} VALUES ({})".format(table_name, ','.join(['%s']*number_of_columns))
self.cur.execute(query, params)

或者更好,使用一个已经提供了一些数据库抽象的包,比如SQLAlchemy。你知道吗

相关问题 更多 >