我有一个应用程序,需要通过使用良好的老式模型以及生成的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破坏了工作代码,我该如何防止这种情况发生呢?
答案 0 :(得分:4)
问题是冒号。该表示法用于指定绑定参数。解决它:
cmd = cmd.replace(':','\\:')