python数据库抽象来存储未打开的数据结构

时间:2013-06-14 16:02:59

标签: python database

我正在寻找一种在数据库中存储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的列,其中我将行中的对象属性的值存储为可搜索的文本。当然,必须进行一些初始设置。

当然,如果我可以插入我想要的任何数据库(好吧,至少不只是一个数据库)并且不会对细节感到困扰,那将是很好的。

现在我当然可以编写自己的框架来让我这样做,但我希望其他人能够做到这一点:)

有什么建议吗?

2 个答案:

答案 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如下:

  • Python - SQLAlchemy,Storm,Django(内置于Web框架中)
  • Ruby - ActiveRecord,Sequel
  • 节点 - Sequelize

对于使用SQLAlchemy实现您在Python中描述的内容的特定示例,check out this blog post介绍了一个简单的示例