0

В следующих кодах я хочу вставить authors, указав link.Как вставить эти данные в postgresql с помощью python?

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

Не форматировать строки с % при использовании SQL, пусть водитель сделать правильное вытекание:

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

Обратите внимание, я передал данные в качестве второго аргумента, execute будет заботиться о побеге данных должным образом.