我正在使用带有 psycopg2 python/flask Web 应用程序的 postgres。
我遇到了一个编码问题,我确定这是我缺少的一些愚蠢的东西(我是编程新手)。以下语句完美运行:
cur.execute("SELECT column_name FROM information_schema.columns where table_name = %s;", (tablename,))
我使用 fetchall() 在表中创建列名列表。但是,另一个语句不起作用:
cur.execute("ALTER TABLE %s ADD COLUMN %s varchar;", (tablename, col,))
这是错误:
psycopg2.ProgrammingError
ProgrammingError: syntax error at or near "E'flatresponses_1'"
LINE 1: ALTER TABLE E'flatresponses_1' ADD COLUMN E'What was the bes...
('flatresponses_1' 是 'tablename',而 'What was the best...' 是 'col' 的开头。)
我做了'print cur.query',结果如下:
>>> print cur.query
>>> ALTER TABLE E'flatresponses_1' ADD COLUMN E'What was the best part of your ENT clinic visit today? Why?' varchar;
我在第二个查询中得到 E' 编码,但不是第一个。我也试过 str(tablename)。
我错过了什么?!