首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >令人费解的编码与python、Flask、psycopg2的不一致

令人费解的编码与python、Flask、psycopg2的不一致
EN

Stack Overflow用户
提问于 2012-12-31 16:03:18
回答 2查看 596关注 0票数 0

我正在使用postgres和一个psycopg2 python/flask web应用程序。

我有一个编码问题,我确信这是我遗漏的一些愚蠢的东西(我是编程新手)。下面的语句可以完美地工作:

代码语言:javascript
复制
cur.execute("SELECT column_name FROM information_schema.columns where table_name = %s;", (tablename,))

我使用fetchall()在我的表中创建一个列名列表。然而,另一个语句不起作用:

代码语言:javascript
复制
cur.execute("ALTER TABLE %s ADD COLUMN %s varchar;", (tablename, col,))

下面是错误:

代码语言:javascript
复制
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',’什么是最好的...‘是“col”的开头。)

我做了‘打印cur.query’,结果如下:

代码语言:javascript
复制
>>> 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)。

我遗漏了什么?!

EN

回答 2

Stack Overflow用户

发布于 2012-12-31 16:51:21

我最终使用了this post中描述的AsIs psycopg2扩展。像护身符一样工作!

票数 2
EN

Stack Overflow用户

发布于 2012-12-31 16:13:37

表名和列名不是文本类型,它们是标识符(type = name)。它们不接受转义的字符串字面量,因此您的占位符可能需要%s以外的其他值。

http://www.postgresql.org/docs/9.2/static/datatype-character.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14099092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档