我正在寻找一种在数据库中存储python对象的通用方法。当然我可以腌制对象,但这样我在数据库中会有二进制blob。这样我就无法搜索我的对象。此外,将其与其他应用程序放在一起似乎更容易。
所以在我的幻想中,我有像
这样的对象class myClass
data1=1
data2='foobar'
data3=some_html_object
...
并且可以做类似
的事情mydata=myClass()
mydata.add_data(various_things)
mydata.save_to_database()
并最终得到一个数据库,其中包含名为data1,data2,data3的列,其中我将行中的对象属性的值存储为可搜索的文本。当然,必须进行一些初始设置。
当然,如果我可以插入我想要的任何数据库(好吧,至少不只是一个数据库)并且不会对细节感到困扰,那将是很好的。
现在我当然可以编写自己的框架来让我这样做,但我希望其他人能够做到这一点:)
有什么建议吗?
答案 0 :(得分:4)
你的幻想其实存在!
您描述的是Active Record Pattern。它通常使用Object-Relational Mapping来实现。 Python的一个常见解决方案是SQLAlchemy,但Storm在某种程度上也很受欢迎:
请参阅What are some good Python ORM solutions?
如果您正在为网络开发,Django拥有自己的ORM。
答案 1 :(得分:3)
听起来你想要的是Object Relational Mapper(ORM)将SQL表映射到对象。
社区支持不同方言的最受欢迎的ORM如下:
对于使用SQLAlchemy实现您在Python中描述的内容的特定示例,check out this blog post介绍了一个简单的示例