【问题标题】:How do i insert multiple tables into a table using TinyDB?如何使用 TinyDB 将多个表插入到一个表中?
【发布时间】:2017-06-20 04:45:23
【问题描述】:

我一直在尝试使用 TinyDB 在一个表中创建多个表。这是一个帮助您了解 TinyDb 是什么的网站 (TinyDB PDF)。 PDF 文件没有显示如何将多个表插入到一个表中,一个多个数据到一个表中。

我希望 json 文件看起来像这样:

"MASTER TABLE": 
{
     {"TABLE 1": {"1": {"Name": "Alice", "Age": 19}}
     {"TABLE 2": {"1": {"Name": "John", "Age": 12}}, 
}

但是,问题是我不确定如何将 Table1 和 Table2 插入到主文件表中。所以它给了我 table1 不是元素的错误。我知道它不是一个元素,但我不知道如何修复它,将两个表放在主文件表下。如有任何帮助,我将不胜感激。

这是我的代码:

from tinydb import TinyDB, Query
from tinydb import TinyDB, where
import json

with open("/home/pi/Desktop/jsontest/test.json", 'w+'):
    table1 = TinyDB('/home/pi/Desktop/jsontest/test.json')
    table1 = table1.table('TABLE 1')
    table1.insert_multiple([{'Name' : 'Alice' , 'Age' : 19}])

    table2 = TinyDB('/home/pi/Desktop/jsontest/test.json')
    table2 = table2.table('TABLE 2')
    table2.insert_multiple([{'Name' : 'john' , 'Age' : 12}])

    overall = TinyDB('/home/pi/Desktop/jsontest/test.json')
    overall = overall.table('MASTER TABLE')
    overall.insert([table1])

【问题讨论】:

    标签: python json python-3.x tinydb


    【解决方案1】:

    将表插入另一个表没有意义?

    from tinydb import TinyDB
    
    db = TinyDB('db.json')
    
    table1 = db.table('TABLE 1')
    table1.insert({'Name' : 'Alice' , 'Age' : 19})
    
    table2 = db.table('TABLE 2')
    table2.insert({'Name' : 'john' , 'Age' : 12})
    

    给出 db.json 包含:

    {
       "_default": {}, 
       "TABLE 1": {"1": {"Name": "Alice", "Age": 19}}, 
       "TABLE 2": {"1": {"Name": "john", "Age": 12}}
    }
    

    我认为你的 JSON 不正确,你不能在这里使用语法(键,值):

    "MASTER TABLE": 
    {
        {"TABLE 1": {"1": {"Name": "Alice", "Age": 19}}
        {"TABLE 2": {"1": {"Name": "John", "Age": 12}}, 
    }
    

    你可以这样做:

    from tinydb import TinyDB
    
    db = TinyDB('db.json', default_table='MASTER TABLE')
    
    master_table = db.table('MASTER TABLE')
    master_table.insert({"TABLE 1": {"1": {"Name": "Alice", "Age": 19}}})
    master_table.insert({"TABLE 2": {"1": {"Name": "John", "Age": 12}}})
    

    您获得 db.json 包含:

    {
      "MASTER TABLE": {
          "1": {"TABLE 1": {"1": {"Name": "Alice", "Age": 19}}}, 
          "2": {"TABLE 2": {"1": {"Name": "John", "Age": 12}}}
      }
    }
    

    但这很奇怪。

    【讨论】:

      【解决方案2】:

      对于只想检查数据库是否有任何表的人,您可以使用以下代码(我正在寻找我的问题的答案,但这个线程弹出了,所以我认为其他有相同问题的人可能以后访问这个线程)

      from tinydb import TinyDB
      
      connection = TinyDB(self.current_directory  + self.database_name)
      connection_str = str(connection).split(',')
      _, _, tail = connection_str[1].partition('=')
      if int(tail) == 0:
          print("INFO: No tables in the database.")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-08
        • 2017-08-28
        • 2019-09-29
        • 1970-01-01
        相关资源
        最近更新 更多