【问题标题】:Add multiple tinyDB databases together一起添加多个 tinyDB 数据库
【发布时间】:2021-04-26 15:21:25
【问题描述】:

如何将多个 tinyDB(基于文档的数据库)数据库添加在一起而不会出现 AssertionError 错误? 我试图在这个例子中添加 12 个 tinyDB 数据库。

文件结构:

每个编号的文件如下所示:

{
    "_default": {
        "1": {
            "Strategy": "MAShift",
            "Symbol": "AAVE/USD",
            "Timeframes": [
                "30T"
            ],
            "Parameters": {
                "atr": 14,
                "sma": 5,
                "longLine": 3,
                "shortLine": 5,
                "slMultipier": 12,
                "leverage": 1
            },
            "Start": "2020-10-13 12:00:00",
            "End": "2021-04-26 11:30:00",
            "Duration (days)": 194,
            "Equity Start [$]": 10000,
            "Equity Final [$]": 90470.5732,
            "Return [%]": 804.71,
            "Max. Drawdown [%]": -28.1,
            "Win rate [%]": 69.12,
            "Total trades": 570,
            "Avg. trade [%]": 0.43,
            "Avg. winning trade [%]": 1.88,
            "Avg. losing trade [%]": -2.81
        }, ...
    }
}

我的代码:

from tinydb import TinyDB

resultsTotalDb = TinyDB(f'db/backtestingResultsTotal.json')

for i in range(12):
    resultsDb = TinyDB(f'db/backtestingResults{i}.json')
    for result in resultsDb.all():
        resultsTotalDb.insert(result)

错误:

AssertionError: doc_id 1 already exists

【问题讨论】:

  • 错误很明显 - 你不能有重复的文档 ID。
  • 是的,这正是我试图解决的错误。因为所有 12 个文件都有文档 ID,当我尝试将第二个文件添加到“主”文件时出现此错误,这是因为文档 1 和 2 都具有文档 ID 1、2、3,...
  • @AKX 我已经用文件结构和带编号的 json 文件的示例更新了我的问题。

标签: python json python-3.x tinydb


【解决方案1】:

您可以根据数据库计数器重新计算新的文档 ID:

from tinydb import TinyDB
from tinydb.table import Document

# ...

for i in range(12):
    resultsDb = TinyDB(f"db/backtestingResults{i}.json")

    for result in resultsDb.all():
        new_id = i * 100000000 + result.doc_id
        resultsTotalDb.insert(Document(result, doc_id=new_id))

【讨论】:

    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多