从TinyDB交互获取数据

2024-05-16 18:59:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图弄清楚如何使用用户输入的数据作为输入从TinyDB数据库获取信息。在

我的数据库看起来像这样:

{"_default": {"1": {"switch": "n9k-c9372px", "names": ["nexus 9372px", "nexus 9372-px", "nexus9372px", "n9372px", "n9k-c9372px"], "fex_comp": ["2224tp", "2232pp"]}, "2": {"switch": "n9k-c9396px", "names": ["nexus 9396px", "nexus 9396-px", "nexus9396px", "n9396px", "n9k-c9396px"], "fex_comp": ["2232tm-e", "2248tp"]}}}

基本上,DB是两个带列表的字典的结果,如下所示:

^{pr2}$

我的想法是:

  1. 提示输入开关型号(q=输入(“告诉我 型号“))。在
  2. 获取用户的输入(q),并检查它是否匹配 数据库中的任何“名称”。在
  3. 如果是,那么打印fex_comp list,整个列表。否则,请打印另一条消息。在

我知道如何形成if、else、语句以及如何使用for循环,但我还没有弄清楚如何执行上面描述的内容。在

非常感谢任何帮助!在

埃德瓦德


Tags: 数据用户nexus数据库列表names型号switch
1条回答
网友
1楼 · 发布于 2024-05-16 18:59:31

是这样吗?在

   from tinydb import TinyDB, Query

    ql = ['nexus9372px','nexus9396px', 'not_there']

    def mkdb():
        db = TinyDB('db.json')
        db.purge()
        db.insert({'switch': 'n9k-c9372px',
                   'names': ['nexus 9372px',
                             'nexus 9372-px',
                             'nexus9372px', 'n9372px'],
                   'fex_comp': ['2224tp', '2232pp',
                                '2232tm', '2232tm-e']})
        db.insert({"switch": "n9k-c9396px",
                   "names": ["nexus 9396px", "nexus 9396-px",
                             "nexus9396px", "n9396px",
                             "n9k-c9396px"],
                   "fex_comp": ["2232tm-e", "2248tp"]})
        return(db)

    def get_name():
        return(input('Name? '))

    def search(name, db):
        Name = Query()
        res = db.search(Name.names.any(name))
        if res:
            #print(res)
            print('fex_comp for {}: {}'.format(name, res[0]['fex_comp']))
        else:
            print('{} not found'.format(name))

    db = mkdb()
    name = get_name()
    search(name, db)

相关问题 更多 >