gpt4 book ai didi

python - 获取动态创建的 python 实例的状态并将其序列化为关系模型

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:36 25 4
gpt4 key购买 nike

我正在开发某种框架。我正在提供一个基类,其他开发人员将对其进行子类化以向系统添加行为。这些类的实例将具有我的框架不一定期望的属性,除非通过检查这些实例的 __dict__。为了让事情变得更有趣,其中一些类可以随时动态创建。

我希望框架可以处理一些事情,也就是说,我需要保留这些实例,向用户显示它们的属性值,并让她使用这些值搜索/过滤实例。

我必须使用关系数据库。我知道那里有一些不错的 python OO 数据库,但不幸的是,在这种情况下它们不是一个选项。

我也不是在寻找一个成熟的 ORM...它甚至可能不是一个选项,因为一些类可以动态创建。

所以,我的问题是,我需要序列化 ​​python 实例的什么状态才能确保以后可以反序列化它?看看 __dict__ 就足够了吗?还是我应该使用其他私有(private)属性?

对实例进行 pickle 是不够的,因为我需要取消 pickle 它们以搜索/过滤属性值,而且我担心在内存中执行此操作的数据太多(而不是让数据库执行) .

最佳答案

只需使用 ORM。这就是他们的目的。

您打算做的是在您自己的时间创建您自己的半评估 ORM。为自己的代码节省时间,并利用其他人免费为您解决此问题所做的努力。

请注意,python 中的所有类创建都是“动态的”——这根本不是问题。事实上,如果您以编程方式组装类,使用 ORM 可能会稍微容易一些,因为它们提供了字段的具体化。

在最坏的情况下,如果你真的需要将你的对象存储在一个假的 nosql 类型的模式中,如果你使用现有的 ORM,你仍然只需要编写自己的后端驱动程序,而不是自己编写整个堆栈. (碰巧的是,您不是第一个面对这个问题的人 - 存在解决方案。Goole“python orm store dynamically created models”和“sqlalchemy store dynamically created models”)

候选人包括:

  • Django 对象关系管理
  • SQL炼金术
  • 您可以通过谷歌搜索“Python ORM”找到其他一些。

关于python - 获取动态创建的 python 实例的状态并将其序列化为关系模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com