sqlalchemy会话执行有效的postgres语法

时间:2014-03-27 01:36:02

标签: python postgresql sqlalchemy syntax-error

我有一个应用程序,需要通过使用良好的老式模型以及生成的sql与数据库进行交互。

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破坏了工作代码,我该如何防止这种情况发生呢?

1 个答案:

答案 0 :(得分:4)

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

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