今天在使用sqlalchemy执行如下sql语句时报错
>>> session.execute('REPLACE INTO vehicle (`index`, `license_plate`) VALUES ('7', '(2021):京A77777')
StatementError: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter '京A77777'
[SQL: REPLACE INTO vehicle (`index`, `license_plate`) VALUES ('77', '(2021)%(京A77777)s')]
[parameters: [{}]]
为什么‘(2021):京A77777’会变成‘(2021)%(京A77777)s’?
貌似是冒号引起的问题,
把冒号前的右括号去掉也正常,所以好像就只有‘):’这样的组合会出现错误
查了一下这是由于冒号在session.execute()中是作为参数绑定符号出现的
t = text("SELECT * FROM users WHERE id=:user_id")
result = connection.execute(t, user_id=12)
参考:
https://docs.sqlalchemy.org/en/14/core/sqlelement.html#sqlalchemy.sql.expression.text
https://stackoverflow.com/a/49913328

在使用SQLAlchemy执行SQL语句时遇到一个StatementError,原因是`REPLACE INTO`语句中的`:京A77777`被解析为参数绑定。冒号在session.execute()中作为参数标识,导致错误。解决方案是避免使用冒号或者转义。参考了官方文档和Stack Overflow上的解答,问题与参数绑定有关。
5万+

被折叠的 条评论
为什么被折叠?



