webpy 数据库选择查询中的问题

2 投票
1 回答
531 浏览
提问于 2025-04-17 08:02

在webpy的数据库模块中,我有一个查询:

 db().query("select * from table where column in ($ERROR_LIST)",
    vars=dict(ERROR_LIST=ERROR_LIST)).list()

如果ERROR_LIST只是一个普通的变量,这个查询没有问题。但是我的需求是ERROR_LIST必须是一个错误值的列表。有没有办法在webpy数据库模块中处理列表,或者有没有其他方法可以实现这个需求?

1 个回答

1

如果你有一个变量 error_list,它里面存放了一些值,建议让 webpy 自动帮你处理这些值,不要在变量周围加上括号:

db.query("SELECT * FROM table WHERE column IN $ERROR_LIST", vars(dict(ERROR_LIST,error_list)))

因为我认为 reparam 也使用了相同的方法,所以这样做似乎是有效的(包括自动为你加上括号):

>>> error_list = ['a','b','c']
>>> reparam("s IN $ERROR_LIST", dict(ERROR_LIST=error_list))
<sql: "s IN ('a', 'b', 'c')">

撰写回答