使用 Postgres 在 Python 中用单引号形成一个插入语句



我有一个名为注释的字段。我正在有效地尝试将值从一个大表读取到多个表中。因此,我的选择查询为我获取注释字段。

我正在构建一个 Python 脚本来执行从表到表的复制。我的插入查询在遇到类似"对不起!我们无法处理您的订单",因为单引号。

我试过使用$引号,但徒劳无功

这是我正在尝试的

#!/usr/bin/python
import psycopg2
conn = psycopg2.connect("dbname='postgres' user='postgres' host='localhost' )
mark=conn.cursor()
/* fectching the rows and doing other stuff */
addthis="insert into my_table(something) values("$$"+str(row[8])+"$$")
mark.execute(addthis)
conn.commit()

感谢您的帮助!

  1. 插入语句应使用占位符。在 psycopg2 的情况下,它是 %s .
  2. 您应该将参数作为第二个参数传递给 execute() 。这样您就不会有引用问题,并且可以防止SQL注入攻击。

例如:

addthis = "INSERT INTO my_table (something) VALUES (%s);"
mark.execute(addthis, ('a string you wish to insert',))

你可以使用占位符,正如伯尼所建议的那样。这是首选方法。
但是,在某些情况下无法使用占位符。然后,您必须手动转义 qoutes。这是通过反砍它们来完成的:

addthis="insert into my_table(something) values(%s)" % str(row[8]).replace('"', r'"').replace("'", r"'")
mark.execute(addthis)

相关内容

  • 没有找到相关文章

最新更新