Python python web.py db.update 问题

cwalet · 2014年04月05日 · 最后由 mozillazg 回复于 2014年04月09日 · 9157 次阅读
db.update(table, where='id IN ($id)', vars={'id': id.split(',')})

id 值为串"1,2",以上代码报错: OperationalError: (1241, 'Operand should contain 1 column(s)') 若换成:

db.update(table, where='id IN ($id)', vars={'id': id})

则报:Warning: Truncated incorrect DOUBLE value: '1,2' 莫非对于 IN 操作只能串拼接,不能参数替换?

db.update 的用法用错了,按照你的代码实现的 SQL 是这样的: update table set where id in ((1, 2))

正确的用法是这样的: db.update(table_name, where='id in $id', column_name='abc', vars={'id': [1, 2]}), 生成的 SQL: update table_name set column_name='abc' where id in (1, 2)

>>> db.update('abc', where='id in ($a)', vars={'a': [1, 2]}, _test=True)
<sql: 'UPDATE abc SET  WHERE id in ((1, 2))'>
>>> db.update('abc', name='eric', where='id in $a', vars={'a': [1, 2]}, _test=True)
<sql: "UPDATE abc SET name = 'eric' WHERE id in (1, 2)">


#1 楼 @mozillazg 文档里都没找到 in 是怎么传参的,谢谢了!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号