我遇到了同样的问题: python adds "E" to string
所有答案都是相关的,但我在这个问题上打破了我的想法。
问题是psycopg2不仅会转义值,还会转义模式,表和列名称,如下所示:
CREATE TABLE E'Tablename' (E'identificatie' VARCHAR(16))
它根本不应该!我是如何摆脱E和''的表名和列,但保留它们的字段值?
替代
'CREATE TABLE ' + tablename + ' (' + fieldname... %
让它再次受到sql注入攻击。
困在岩石和坚硬的地方之间..
答案 0 :(得分:1)
无论好坏,通常不支持Python接口和Psycopg,特别是将用户提供的标识符替换为SQL命令。你必须自己动手。它可以通过几行代码完成。
答案 1 :(得分:0)
好的,谢谢彼得,至少我知道不要再看了。我决定采取不同的方法:
使用脚本文件生成数据库,而不是从代码生成数据库。这样可以更容易地对数据库进行“版本控制”。
与此同时,我正在研究sqlalchemy http://www.sqlalchemy.org/,它实际上是我想要的,但目前是一步,因为它需要对我正在重建的应用程序进行大幅度的重组