如何使用python将此数据插入postgresql?

时间:2016-11-10 03:03:30

标签: python postgresql parameter-passing sql-injection psycopg2

在以下代码中,我希望通过找到authors来插入link

self.cur.execute("""
    UPDATE articles 
    SET authors = %s 
    WHERE link = %s returning id;
""" % (authors, link))
ret_id = self.cur.fetchone()

遇到两个问题:

  1. 有些名字不像这样:

    LINE 1: UPDATE articles SET authors = Francesco D'Angelo,  Roberto T...
    
  2. 当作者姓名没问题时:

    """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...
    

1 个答案:

答案 0 :(得分:1)

在使用SQL时,不要使用%格式化字符串,让驱动程序进行正确的转义:

self.cur.execute(
    """UPDATE articles SET authors = %s WHERE link = %s returning id;""", (authors, link))

注意我将数据作为第二个参数传递,execute将负责正确地转义数据。