我如何使用 TinyDB 将多个 table 插入到 table 中?

How do i insert multiple tables into a table using TinyDB?

我一直在尝试使用 TinyDB 在 table 中创建多个 table。这里有一个网站可以帮助您了解什么是 TinyDb (TinyDB PDF)。 PDF文件没有说明如何将多个table插入一个,一个多个数据插入一个table。

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

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

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

这是我的代码:

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])

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

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 不正确,你不能在此处使用语法 (key, value):

"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}}}
  }
}

不过很奇怪。

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

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.")