【问题标题】:How to persist data between executions in Python如何在 Python 中的执行之间持久化数据
【发布时间】:2011-09-03 21:45:03
【问题描述】:

我正在使用 Python 进行一个个人项目,我需要某种形式的持久数据。数据将适合 2-3 个表,每个表有 10-20 列和 100-200 条记录。我对 SQL 有基本的了解,所以做个数据库似乎有点意思。

我是 Python 新手,所以我不熟悉 Python 的数据库接口选项。我也听说过酸洗,但不确定这是否对我的项目规模来说是一个更好的解决方案。谁能推荐一个好的解决方案?

【问题讨论】:

    标签: python database persistent-storage


    【解决方案1】:

    或者,如果您只是想在执行之间持久化数据 - 对于如此小的数据集,您可以查看 pickle 模块的持久性,并在执行期间将数据加载到内存中。

    这是一个简单的解决方案 - 但对于个人项目来说可能就足够了。

    【讨论】:

    • +1 我也会从 pickle 开始,只是扔一堆元组列表。
    • 我想我会从泡菜开始。感谢大家提供有关不同解决方案的建议和信息!
    【解决方案2】:

    您应该为此使用sqlite3 模块,它包含在 Python 中。

    您也可能想寻找ORM 解决方案。

    【讨论】:

      【解决方案3】:

      这听起来像很少的数据。 SQL DB 可能是多余的,尤其是在顶部有 ORM 的情况下。我会检查JSON 是否可以完成这项工作......

      【讨论】:

      • JSON 比 pickle 有什么优势?根据我的粗略理解,使用 Python 自己的 pickle 格式似乎会更好。
      • 它受到广泛支持(即实际上与平台/语言无关),而且它是人类可读的。
      • 但是 Json 本身并不是持久的。您需要将其写入文件并将其读取到文件中,在读取/写入时序列化/反序列化。酸洗可能会更快。但是当你有更复杂的数据类型需要持久化时,酸洗真的很划算,比如类实例。
      • @ThomasH 同意。但是,如果是小而简​​单的数据,我会选择 json - 我只是喜欢 txt 文件带来的灵活性,而且我可能会有点偏见,因为我有时会使用 JS...
      • json 与 pickle 的代码几乎完全相同,所以我不一定会选择一个,因为它“更容易”或其他任何东西。 Pickle 可以处理更多类型,但它不像 json 那样可读,并且仅限于 python。您也可以考虑 YAML,它与 json 类似,但更具人类可读性 (IMO)。
      【解决方案4】:

      我同意使用 sqlite3。它非常易于使用,您无需担心必须设置数据库服务器。您也应该查看SQLAlchemy 库。

      【讨论】:

        【解决方案5】:

        真正的问题是你想对你的数据进行什么样的操作。

        就存储可能性而言,最简单的解决方案确实是sqlite3pickle

        您将选择的解决方案基本上取决于使用 SQL 还是 Python 是您管理数据的最简单方法。 SQL 可能比 Python 更擅长复杂的操作,但 Python 肯定更轻量级和更简单,因此是简单操作的不错选择。所以,如果使用pickle+Python过于繁琐,那么sqlite3是一个非常不错的选择。

        【讨论】:

          【解决方案6】:

          Peewee 是另一个与 SQLite 一起使用的 ORM。它是 SQLAlchemy 的替代品。如果使用 SQLite,我会考虑将 Peewee 用于宠物项目,将 SQLAlchemy 用于专业工作。我通常不会直接使用 SQLite。

          【讨论】:

            猜你喜欢
            • 2012-08-28
            • 2014-01-18
            • 1970-01-01
            • 2016-01-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-20
            相关资源
            最近更新 更多