I'm using Postgres 9 and Python 2.7.2 along with psycopg2 and am trying to insert an array of string values with properly escaped quotation marks. Sample:
metadata = {"Name": "Guest", "Details": "['One', 'Two', 'Three']"}
cur.execute("insert into meta values ('%s');" % metadata)
which throws the exception:
psycopg2.ProgrammingError: syntax error at or near "One"
LINE 1: "Details": "['One...
^
I've also tried using Postgres' E to escape along with backslashes, but haven't found the correct combination yet. Ideas?
You have to let psycopg do parameters binding for you: don't try to quote them yourself.
Psycopg automatically converts a python list of strings into a postgres array. Check https://www.psycopg.org/docs/usage.html#lists-adaptation