在以下代码中,我希望通过找到authors
来插入link
。
self.cur.execute("""
UPDATE articles
SET authors = %s
WHERE link = %s returning id;
""" % (authors, link))
ret_id = self.cur.fetchone()
遇到两个问题:
有些名字不像这样:
LINE 1: UPDATE articles SET authors = Francesco D'Angelo, Roberto T...
当作者姓名没问题时:
"""UPDATE articles SET authors = %s WHERE link = %s returning id;""" % (authors, link))
psycopg2.ProgrammingError: syntax error at or near ":"
LINE 1: ...DATE articles SET authors = test WHERE link = http://www.wor...
答案 0 :(得分:1)
在使用SQL时,不要使用%
格式化字符串,让驱动程序进行正确的转义:
self.cur.execute(
"""UPDATE articles SET authors = %s WHERE link = %s returning id;""", (authors, link))
注意我将数据作为第二个参数传递,execute
将负责正确地转义数据。