文本文件、MongoDB 还是 JSON? [关闭]

Posted

技术标签:

【中文标题】文本文件、MongoDB 还是 JSON? [关闭]【英文标题】:Text File, MongoDB or JSON? [closed] 【发布时间】:2021-08-08 17:23:05 【问题描述】:

所以,我正在学习 python 和 discord.py,在一个有 500 行代码的机器人中,我只请求了一项帮助。其余的,我一直在研究自己和反复试验。我目前正处于十字路口,想要一些建议走哪条路。我不想问怎么做,我会自己想办法(希望如此)。

所以,我在我的 Windows PC 上运行了一个机器人,它只在我自己的单个服务器上运行。该机器人返回一条嵌入消息,其中包含基于一系列角色的非活动用户列表。在几个嵌套的 IF 语句之后,它添加了带有 person.mention 的字段。然后将列表发布到特定频道,并全部提及。

根据规则,他们有 48 小时的时间来改进他们的活动,这将改变他们的角色。

因此,虽然第一个命令的工作原理很吸引人,但我希望创建第二个命令,通过之前“审核”中的用户列表(通常约 15-30 人)检查他们是否活动已改进(如果存在一组角色)并在员工频道中报告“成员不合规,可能被删除:”然后删除已保存用户的列表以进行下一次审核。 (每月两次)

为此,我需要研究如何,但为了节省我的时间,我问我应该研究哪条路线以及为什么?文本文件? D B?还是 JSON?

感谢大家的意见。

【问题讨论】:

很难对如此模糊的描述给出建议。但如果它只在单个主机上运行,​​我会使用 JSON,因为你可以很容易地做到 with open("filename", "w") as file: json.dump(users_dict_or_list, file)with open("filename") as file: users = json.read(file)。似乎是最少的麻烦。 【参考方案1】:

我通常建议对小型机器人使用小型数据库(如 sqlite),但如果您是 python 新手,则不应该学习 SQL。我想使用JSON 文件是可行的,尽管将它们用作数据库并不是一个好主意,它主要用作配置文件。使用JSON 文件的一些缺点是:

它是基于文件的数据存储,容易受到竞争条件的影响。 您需要实现自己的同步原语以避免损坏数据。 如果您不小心,可能会意外擦除整个 JSON 文件。

JSON 文件的另一种替代方法是 yamltoml 文件,但缺点是相同的。


使用数据库:

如果您想学习 SQL(有很好的、免费的、易于关注的资源,例如 sqlbolt),优势在于:

数据库将您的数据组织成表格,并且可以快速插入、检索和删除记录。 您可以施加唯一性约束以防止重复。 Python 库为您强制执行同步。 查询语言直观,只需几个小时即可开始运行简单的查询!

MongoDB 是一个很好的数据库选择,我没有亲自使用过,但它是一个很好的非关系型数据库(不使用 SQL)。

PS:甚至不要考虑使用 txt 文件作为数据库,这是一个糟糕、糟糕、糟糕的主意。

【讨论】:

以上是关于文本文件、MongoDB 还是 JSON? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Robomongo 从 MongoDB 导出 JSON

python 导入 json 文件到 MongoDB 中

python 导入 json 文件到 MongoDB 中

Symfony(PHP 框架)和 MongoDB(或任何基于 json 的数据库)[关闭]

使用settings.json而不是mongodb集合有什么好处吗? [关闭]

(shell脚本)特殊分隔符文本文件导入MongoDB