我有一个名为评论的字段。 我正在有效地尝试将一个大表中的值读入多个表。 因此,我的选择查询为我提取了注释字段。
我正在构建一个Python脚本来执行从表到表的复制。 我的插入查询因遇到单引号而遇到“抱歉!我们无法处理您的订单”等注释字段时失败。
我尝试过使用$ quotes但是徒劳无功
这是我正在尝试的
#!/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()
感谢帮助!
答案 0 :(得分:6)
%s
。execute()
。这样你就没有引用问题而且防范SQL注入攻击。例如:
addthis = "INSERT INTO my_table (something) VALUES (%s);"
mark.execute(addthis, ('a string you wish to insert',))
答案 1 :(得分:-3)
您可以按照 bernie 的建议使用占位符。 这是首选方式。
但是,有些情况下无法使用占位符。然后你必须手动逃避qoutes。这是通过反斜杠来完成的:
addthis="insert into my_table(something) values(%s)" % str(row[8]).replace('"', r'\"').replace("'", r"\'")
mark.execute(addthis)