我有一个名为注释的字段。我正在有效地尝试将值从一个大表读取到多个表中。因此,我的选择查询为我获取注释字段。
我正在构建一个 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()
感谢您的帮助!
- 插入语句应使用占位符。在 psycopg2 的情况下,它是
%s
. - 您应该将参数作为第二个参数传递给
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)