Python:存储对象状态到数据库的最佳方法?

3 投票
3 回答
4626 浏览
提问于 2025-04-17 05:39

我需要把一些实例(或者说它们的状态)存储到数据库里。我的想法是,能够随时根据需要重新创建这些实例。因为我自己定义了类,所以我可以选择数据存储的方式。

看看下面这个图,展示了继承关系:

                    A
                   / \
                  B   C
                 /\   /\
                D  E F  ...

我的想法是,这些实例可以属于这些类中的任何一个,并且它们自己也可以存储其他对象(这些对象我完全可以设计)。

我最初的想法是把状态单独存储在一个字典里,然后把这个字典转成json格式,存到数据库中。在运行时,从数据库加载json,再把它转换回字典,然后创建一个对象,把这个字典传进去,这样就能设置好对象了……

我不太确定这个方法是否好,还有没有其他可能出现的问题。我已经遇到一个问题,就是如果你使用myobj.dict,你实际上并不能得到所有父类的属性……

有什么建议吗?

3 个回答

0

我建议你围绕你的状态设计一个对象模型,并使用Python的ORM工具包。这里提到了一些工具 - 有哪些好的Python ORM解决方案?

我觉得没有必要重新发明轮子。你可以使用ORM工具包来存储状态,或者直接存储实际的对象实例树。

2

shelve模块是开始存储可以通过键来获取的实例的最简单方法。它会自动帮你把数据打包和解包,还会处理文件的读写。

4

有几种方法可以选择。不过根据你提供的信息,我觉得很难告诉你哪种方法最适合你。

这些是我能想到的方法。只有你自己才能决定哪一种最符合你的需求和意图。

撰写回答