使用python文件作为数据库

使用python文件作为数据库,python,mysql,sql,django,python-3.x,Python,Mysql,Sql,Django,Python 3.x,我是一名中级python开发人员,在数据分析方面有相当多的使用t-sql/mysql的经验。我正在尝试使用python进行一些web编程,以构建网站后端的某些组件 在我的一个应用程序中,我没有查询数据库,而是将一些基于字典的数据结构直接放在python文件的列表中,并将其导入保存应用程序逻辑的脚本中。需要注意的重要一点是,该数据是静态的,此时大约有5k个字典 数据本身包含键值对,其中的值通常是一个元组列表,因此我发现python数据结构的灵活性比传统的RDBMS表更易于使用 我浏览过互联网,似乎

我是一名中级python开发人员,在数据分析方面有相当多的使用t-sql/mysql的经验。我正在尝试使用python进行一些web编程,以构建网站后端的某些组件

在我的一个应用程序中,我没有查询数据库,而是将一些基于字典的数据结构直接放在python文件的列表中,并将其导入保存应用程序逻辑的脚本中。需要注意的重要一点是,该数据是静态的,此时大约有5k个字典

数据本身包含键值对,其中的值通常是一个元组列表,因此我发现python数据结构的灵活性比传统的RDBMS表更易于使用

我浏览过互联网,似乎找不到任何关于开发人员实际使用.py文件存储数据以供其程序使用的参考资料,这让我相信这种方法不应该在生产站点中使用

我希望能弄清楚为什么会这样(以及可能的替代方案)

  • 与RDBMS解决方案相比,我的.py解决方案的扩展性会很差吗?随着使用我的应用程序的用户数量的增加,或者如果我选择在我的数据集中支持更多的车辆
  • 如果.py解决方案不起作用,是否有一个nosql解决方案可以为我提供所需的灵活数据结构?或者mysql解决方案在这个用例中仍然优越吗? 谢谢
    我可以说,您的.py文件解决方案可能不会持续很久。如果您正在寻找一个合适的键值存储解决方案,您一定要查看nosql数据库后端,例如或。

    我过去也做过类似的事情-。这是一个标准的lib模块,允许您将python对象写入磁盘,从而使它们更容易加载

    但是,与您的解决方案一样,会存在重大的可伸缩性问题。例如,在搁置示例中,整个对象被加载到内存中。我怀疑您的实现也是如此,假设您导入它以获取数据

    数据库的优点之一是不需要将整个数据库保存在内存中。这也意味着你可以更快地执行某些搜索;与编写良好的数据库查询相比,在python中迭代数千个对象以检查它们的特定条件可能会非常慢

    如果您当前的解决方案仍然有效,那么可能没有真正的理由立即改变一切。但是,如果您认为这个应用程序将继续增长,那么制定迁移计划并不是一个坏主意


    我最终将我的应用程序迁移到了RejectionDB,以获取它的价值。

    也许你可以使用JSON文件格式。或者您是否知道sqlalchemy包,它对RDBMS进行对象映射(例如sqlite3)。