Python:在数据库中存储对象状态的最佳方法?
问题描述:
我需要将实例(或至少它们的状态)存储在数据库中。这个想法是,我应该能够按需重新创建实例。由于我定义了类,我可以选择我想要如何存储数据。Python:在数据库中存储对象状态的最佳方法?
请看下面的图,继承图:
A
/\
B C
/\ /\
D E F ...
的想法是,该实例可以属于任何类和它本身可以存储其他对象(即我已经完全设计控制权)。
我的第一个想法是将状态专门存储在字典中,将字典转储为json并将其存储在数据库中。在运行时,从数据库加载json将其转换为字典,创建一个对象传递字典,得到的设置等等...
我不知道如果这是一个好方法,并且如果有还有其他可能会出现的问题。我已经遇到一个,如果你使用myobj.dict,你实际上并没有得到所有班级的父母的属性,但...
有什么建议吗?
答
有几种方法。我真的不认为我们可以通过您提供的信息告诉您最适合您的方式。
- 您可以使用ORM,如SQLAlchemy。
- 您可以使用object database。
- 您可以腌制您的物品并将其存储在任何relational database或datastore中,包括标准配送中包含的shelve。
这些都是我能想到的办法。只有你可以确定哪一个最符合你的要求和意图。
答
我的建议是围绕你的状态设计一个对象模型,并使用Python的ORM工具包。在这里提到几个 - What are some good Python ORM solutions?
我相信它不是最好的重新发明车轮。您可以使用ORM工具箱来存储状态或实际的对象实例树本身。
它是否必须是数据库?一个简单的愚蠢的解决方案是把它们腌到一个文件。 – Daenyth
http://www.python.org/workshops/1997-10/proceedings/shprentz.html –
http://docs.python.org/library/shelve.html –