1

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

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

{"_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"]}}}

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

{"switch": "switch1", "names": ["name1", "name2", "name3"], "fex_comp":["fex1", "fex2", "fex3"]

我的想法如下:

  1. 提示要求切换模型(q= input("Tell me the model"))。
  2. 从用户那里获取输入(q),并检查它是否与数据库中的任何“名称”匹配。
  3. 如果是,则打印 fex_comp 列表,即整个列表。否则,打印一条不同的消息。

我了解如何形成 if、else、语句以及如何使用 for 循环,但我还没有弄清楚如何做我上面描述的事情。

任何帮助深表感谢!

爱德华

4

1 回答 1

0

那么像这样吗?

   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)
于 2017-01-21T15:27:58.960 回答