2014-03-27 39 views
0

我有一个应用程序需要通过使用良好的老式模型以及生成的sql与数据库进行交互。sqlalchemy会话执行混乱有效的postgres语法

Session = sessionmaker(bind=engine)() 
cmd = """insert into "STO_BANK_CONTROL" ("isn","TRANS_REF_NO","weird") values (8078638,'#:0057/13   ','');""" 
Session.execute(cmd); 

这引发异常:

StatementError: A value is required for bind parameter u'0057' (original cause: InvalidRequestError: A value is required for bind parameter u'0057') u'insert into "STO_BANK_CONTROL" ("isn","TRANS_REF_NO","weird") values (8078638,\'#%(0057)s/13   \',\'\');' [{}] 

,但如果我复制cmd直冲PSQL控制台它工作得很好。

我的问题是:

为什么SQLAlchemy的破碎工作代码和如何防止这种情况的发生?

回答

4

问题是冒号。该表示法用于指定绑定参数。修复它:

cmd = cmd.replace(':','\\:')