Home > Net >  Psycopg2 - Error during insert due to double quotes
Psycopg2 - Error during insert due to double quotes

Time:01-31

I am using Python Psycopg2 to insert an array of texts. elems column is of type text[].

a = ["A ''B'' C"]

cursor.execute(f"""\
  INSERT INTO table(elems) \
  VALUES (ARRAY{a}::text[]) \
""")

Error:

column "A ''B'' C" does not exist

The error above is due to the double quotes from Python list.

Using a database tool, the exact query that works is:

INSERT INTO table(elems)
VALUES (ARRAY['A ''B'' C']::text[])

Now my question: What's the proper way of inserting a Python list of strings where an element may contain a single quote?

CodePudding user response:

a = ["A ''B'' C"]

import psycopg2
con = psycopg2.connect(dbname="test", host='localhost', user='postgres', port=5432)
cur = con.cursor()

cur.execute("insert into array_test(id, text_array) values(%s, %s)", [6, a])
con.commit()

select text_array from array_test where id = 6;
  text_array   
---------------
 {"A ''B'' C"}

cur.execute("insert into array_test(id, text_array) values(%s, %s)", [7, []])
con.commit()

select text_array from array_test where id = 7;
 text_array 
------------
 {}


  • Related