表格,字段和架构上的psycopg2 E'

时间:2011-06-09 14:01:26

标签: python postgresql psycopg2

我遇到了同样的问题: python adds "E" to string

所有答案都是相关的,但我在这个问题上打破了我的想法。

问题是psycopg2不仅会转义值,还会转义模式,表和列名称,如下所示:

CREATE TABLE E'Tablename' (E'identificatie' VARCHAR(16))

它根本不应该!我是如何摆脱E和''的表名和列,但保留它们的字段值?

替代

'CREATE TABLE ' + tablename + ' (' + fieldname... %

让它再次受到sql注入攻击。

困在岩石和坚硬的地方之间..

2 个答案:

答案 0 :(得分:1)

无论好坏,通常不支持Python接口和Psycopg,特别是将用户提供的标识符替换为SQL命令。你必须自己动手。它可以通过几行代码完成。

答案 1 :(得分:0)

好的,谢谢彼得,至少我知道不要再看了。我决定采取不同的方法:

使用脚本文件生成数据库,而不是从代码生成数据库。这样可以更容易地对数据库进行“版本控制”。

与此同时,我正在研究sqlalchemy http://www.sqlalchemy.org/,它实际上是我想要的,但目前是一步,因为它需要对我正在重建的应用程序进行大幅度的重组