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

时间:2011-11-04 19:04:00

标签: python database oop

我需要将实例(或至少它们的状态)存储在数据库中。我的想法是,我应该能够按需重新创建实例。由于我定义了类,我可以选择存储数据的方式。

考虑下图,继承图:

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

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

我的第一个想法是将状态专门存储在字典中,将字典转储到json中并将其存储在数据库中。在运行时,从数据库加载json将其转换为字典,创建一个传入字典的对象,以获取设置等等......

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

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

有几种方法。我真的不认为我们可以从您提供的信息中告诉您最适合您的方法。

这些是我能想到的方法。只有您可以确定哪一个最符合您的要求和意图。

答案 1 :(得分:2)

shelve module是开始存储可通过密钥检索的实例的最简单方法。它会为您自动进行pickle和unpickles,并负责读取和写入文件。

答案 2 :(得分:0)

我的建议是在你的州周围设计一个Object模型,并使用一个用于Python的ORM工具包。这里提到了几个 - What are some good Python ORM solutions?

我认为最好重新发明轮子。您可以使用ORM工具包来存储状态或实际的对象实例树本身。