gpt4 book ai didi

python - 为什么 web2py 中两个逻辑相似的查询会给出不同的结果?

转载 作者:行者123 更新时间:2023-12-01 04:09:24 27 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间,只是尝试随心所欲地改变条件。为什么它以一种方式工作而不是以另一种方式工作?

在此表定义上:

db.define_table('bids',
Field('body', 'text', label="Application"),
Field('selected', 'string', requires=IS_IN_SET(['Yes', 'No']), readable=False, writable=False, default='No', widget=SQLFORM.widgets.radio.widget, label="Select this application"),
Field('confirmed', 'string', requires=IS_IN_SET(['Yes', 'No']), readable=False, writable=False, default='No', widget=SQLFORM.widgets.radio.widget, label="Confirm acceptance"),
Field('delivered', 'string', requires=IS_IN_SET(['Yes', 'No']), readable=False, writable=False, default='No'),
Field('posted_on', 'datetime', readable=True, writable=False),
Field('posted_by', 'reference auth_user', readable=False, writable=False),
Field('job_id', 'reference jobs', readable=False, writable=False)
)

此查询产生正确的数据

query = db.bids.job_id == job_id and db.bids.delivered=='No' and db.bids.selected =='Yes' and db.bids.confirmed=='Yes'

虽然这个没有

query = db.bids.job_id == job_id and db.bids.selected =='Yes' and db.bids.confirmed=='Yes' and db.bids.delivered=='No'

最佳答案

这两个查询都不正确,因为您使用了 and 而不是 & (并且未能将每个条件括在括号中)。应该是:

((db.bids.job_id == job_id) & (db.bids.delivered == 'No') &
(db.bids.selected == 'Yes') & (db.bids.confirmed == 'Yes'))

原始查询:

db.bids.job_id == job_id and db.bids.delivered=='No' and db.bids.selected =='Yes' and db.bids.confirmed=='Yes'

简单地等同于:

True and True and True and db.bids.confirmed == 'Yes'

最终查询中只产生一个条件:

db.bids.confirmed == 'Yes'

关于python - 为什么 web2py 中两个逻辑相似的查询会给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158893/

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