I'm trying to add columns to a table using psycopg2
row1
below is a list of column names to be added to the table. I can do it manually but when I try to do it programatically I get an error.
for c in row1:
cur.execute("ALTER TABLE HHV2PUB ADD COLUMN %s text", (c,))
The error is:
cur.execute("ALTER TABLE HHV2PUB ADD COLUMN %s text", (c,))
psycopg2.ProgrammingError: syntax error at or near "'HOUSEID'"
LINE 1: ALTER TABLE HHV2PUB ADD COLUMN 'HOUSEID' text
My guess is that it has something to do with the single quotes ''
As of Psycopg 2.7 there is the safe sql
module:
from psycopg2 import sql
query = sql.SQL("alter table t add column {} text")
row1 = ('col1', 'col2')
for c in row1:
cursor.execute(query.format(sql.Identifier(c)))
With 2.6 and earlier:
Use psycopg2.extensions.AsIs
Adapter conform to the ISQLQuote protocol useful for objects whose string representation is already valid as SQL representation.
import psycopg2
from psycopg2.extensions import AsIs
conn = psycopg2.connect("host=localhost4 port=5432 dbname=cpn")
cursor = conn.cursor()
query = "alter table t add column %s text"
row1 = ('col1', 'col2')
for c in row1:
cursor.execute(query, (AsIs(c),))
conn.commit()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With