3

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

当然,如果我可以插入任何我想要的数据库(嗯,至少不仅仅是一个数据库)并且不会被细节所困扰,那就太好了。

现在我当然可以编写自己的框架来让我这样做,但我希望这已经由其他人完成了:)

有什么建议么?

4

2 回答 2

4

你的幻想其实是存在的!

您描述了一种称为Active Record 模式的东西。它通常通过使用Object-Relational Mapping来实现。Python 的一种常见解决方案是SQLAlchemy,但Storm在某种程度上也很受欢迎:

请参阅有哪些好的 Python ORM 解决方案?


如果您正在为 Web 开发,Django拥有自己的 ORM。

于 2013-06-14T16:58:09.447 回答
3

听起来您想要的是将SQL 表映射到对象的对象关系映射器(ORM)。

社区支持不同方言的最受欢迎的 ORM 如下:

  • Python——SQLAlchemy、Storm、Django(内置于 Web 框架中)
  • Ruby——ActiveRecord,续集
  • 节点——续集

有关使用 SQLAlchemy 在 Python 中实现所描述内容的具体示例,请查看此博客文章,其中介绍了一个简单示例

于 2013-06-14T19:23:06.733 回答