gpt4 book ai didi

python - 将多个键值匹配到 TinyDB 中的数据库条目?

转载 作者:太空狗 更新时间:2023-10-30 00:01:15 25 4
gpt4 key购买 nike

我很难确定是否可以使用 TinyDB 一次检查多个键值。目前,我可以通过在 if 语句中使用 and 来检查多个字段,如下所示:

def check_table(FNAME="NULL", LNAME="NULL", MNAME="NULL"):
if (HHK_STAFF.search(Query().FNAME == FNAME)) != [] \
and (HHK_STAFF.search(Query().MNAME == MNAME)) != [] \
and (HHK_STAFF.search(Query().LNAME == LNAME)) != []:
print(HHK_STAFF.search(Query().FNAME == FNAME)[0])
else:
print("user does not exist")

check_table(FNAME="Some", MNAME="Random", LNAME="Person")

它可以满足我的要求,但接缝处很笨重。我希望 TinyDB 中有一些内置的东西可以执行相同的功能,而不需要许多 语句。

我正在尝试做一些类似于:

HHK_STAFF.search(where(("FNAME", "MNAME", "LNAME")) == (FNAME, MNAME, LNAME)))

问题:

  1. 有没有人知道有一种方法可以为多个键值而不是一次只查询一个表?

  2. 您能否列出此信息的链接?我很难找到这条信息(如果它存在的话)。

这是我使用 TinyDB 的简单版本:

from tinydb import TinyDB, Query


#~~~~~~~~~~~~~~~~~~~~~~< CURRENT DBPATH >~~~~~~~~~~~~~~~~~~~~~~
DB = TinyDB('./DB_PATH/HHK_DB.json')
#~~~~~~~~~~~~~~~~~~~~~~< CURRENT TABLES >~~~~~~~~~~~~~~~~~~~~~~
HHK_STAFF = DB.table("HHK_STAFF")

HHK_STAFF.insert({'EMPLOYEE_ID':'00000001', 'FNAME': 'Some', 'LNAME':'Person', 'MNAME':'Random'})


def check_table(FNAME="NULL", LNAME="NULL", MNAME="NULL"):
if (HHK_STAFF.search(Query().FNAME == FNAME)) != [] \
and (HHK_STAFF.search(Query().MNAME == MNAME)) != [] \
and (HHK_STAFF.search(Query().LNAME == LNAME)) != []:
print(HHK_STAFF.search(Query().FNAME == FNAME)[0])
else:
print("user does not exist")

check_table(FNAME="Some", MNAME="Random", LNAME="Person")

结果:

{'EMPLOYEE_ID': '00000001', 'FNAME': 'Some', 'LNAME': 'Person', 'MNAME': 'Random'}

最佳答案

根据 Advanced Usage — TinyDB 3.8.1.post1 documentation , 逻辑 AND 看起来像这样:

q = Query()
HHK_STAFF.search((q.FNAME == FNAME) & (q.MNAME == MNAME) & (q.LNAME == LNAME))

根据 git blame of tinydb/queries.py ,自第一个版本以来一直可用。

关于python - 将多个键值匹配到 TinyDB 中的数据库条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49678099/

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