2017-01-21 4 views
1

TinyDB DBから情報を取得するためにユーザーが入力したデータを使用する方法を理解しようとしています。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"]}}} 

は基本的には、DBは、これらのように、リストを持つ2つの辞書の結果である:

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

私の考えは以下の通りです:

  1. スイッチモデルを要求するプロンプトを表示するには(q = input( " モデルを教えてください"))。
  2. ユーザーから入力(q)を取り出し、データベース内の「名前」のいずれかに一致するかどうかを確認します。
  3. もしそうなら、全体のリストであるfex_compリストを印刷します。それ以外の場合は、別のメッセージを印刷します。

私はif、else、およびforループを作成する方法を理解していますが、上記で説明した方法を理解することはできませんでした。

ご協力いただきありがとうございます。

エヴァード

答えて

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) 
+0

こんにちは、お返事ありがとうございます。それは実際に私のために働かない。 TinyDBはsearch.dbメソッドを使用してデータを取得するので、あなたのスクリプトはTinyDBから実際にデータを取得していないようです。私はあなたがvariable = Query()をどこかで宣言しなければならないという印象を受けていますが、私はそれについて間違っているかもしれません。入力プロンプトやTinyDBデータベースからのデータ取得など、私があなたの提案をどのように実装できるかを示してください。 –

+0

私はそれを誤解しています。データベースを作成したコードを提供できますか? – hvwaldow

+0

これは2回のスイッチモデルで2回です:#db.insert({'switch': 'n9k-c9372px'、 'names':['nexus 9372px'、 'nexus 9372-px'、 'nexus9372px'、 'n9372px '、' fex_comp ':[' 2224tp '、' 2232pp '、' 2232tm '、' 2232tm-e '}) –

関連する問題