gpt4 book ai didi

python - Web.py db.update() - 将字典作为参数传递,其中 AND 作为值列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:59 26 4
gpt4 key购买 nike

我有一个字典,其中包含我想在数据库中更新的一些数据,我的字典如下:

user[column_name] = value
>>> user
{'id': 2, 'name': 'Carlo', city='333'}

并且具有可变数量的键(取决于用户填写的字段数量),并且该表包含的列比我要更新的值多。

我想做的是:

>>> db.update('users', where="id=$id", **user)
0.0 (19): UPDATE users SET id = 2, name = 'Carlo', city='333' WHERE id=<built-in function id>
0L

但是更新查询是错误的,我想要获取的是这样的:

UPDATE users SET name='Carlo', city='333' WHERE id='2'

有没有办法在 db.update() 函数中使用键/值作为 WHERE 子句并使用其他键/值对作为 SET 参数来传递字典?

web.py 文档引用了 db.select() 指令,但我根本不清楚..

感谢您的帮助!

费德里科

最佳答案

因为 id 是内置函数,所以你必须在 vars 中定义它:

db.update('users', where="id=$id", vars={'id': user['id']}, **user)

如果你确实不希望更新集中存在 id=2,那么你可以这样做:

uid = user.pop('id')
db.update('users', where="id=$id", vars={'id': uid}, **user)

但如果您在用户中仍然需要它,请记住将其设置回来

或者只是列出您想要的所有内容,如下所示:

db.update('users', where="id=$id", vars={'id': uid}, name=user['name'], city=user['city'])

所以vars将用在where中。所有其他命名参数,除了 vars、_test 都将在集合中

关于python - Web.py db.update() - 将字典作为参数传递,其中 AND 作为值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com