python - 如何实现自动更新的可变 PickleTypes

标签 python sqlalchemy

SQLAlchemy 提供 PickleType并提供 mutation tracking对于任何可变类型(如字典)。

SQLAlchemy 文档提到这是实现可变 PickleType 的方法,但它没有说明具体如何进行。

注意:我想在 PickleType 中存储一个字典。

你是如何实现的?

最佳答案

虽然文档中提到了一些示例,但在我看来还不够,所以我将在此处添加我的实现,该实现可用于实现经过 pickle 并存储在数据库中的可变字典。

使用 MutableDict文档中的示例:

class MutableDict(Mutable, dict):

    @classmethod
    def coerce(cls, key, value):
        if not isinstance(value, MutableDict):
            if isinstance(value, dict):
                return MutableDict(value)
            return Mutable.coerce(key, value)
        else:
            return value

    def __delitem(self, key):
        dict.__delitem__(self, key)
        self.changed()

    def __setitem__(self, key, value):
        dict.__setitem__(self, key, value)
        self.changed()

    def __getstate__(self):
        return dict(self)

    def __setstate__(self, state):
        self.update(self)

现在创建一个要跟踪的列:

class MyModel(Base):
    data = Column(MutableDict.as_mutable(PickleType))

我想看看其他一些可能更高级或可能使用不同数据结构的示例。 pickle 的通用方法是什么样的?有没有(我想没有,或者 SQLAlchemy 会有)。

关于python - 如何实现自动更新的可变 PickleTypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15373583/

相关文章:

python - MySQL全文搜索与SQLAlchemy的正确使用

python - 在 Heroku 上部署 playwright-python

python - sqlalchemy - 连接表的限制就好像它们没有连接一样

python - 是否可以在 alembic 迁移中检索元数据对象?

python - 为什么单元测试无法识别 SQLAlchemy 数据类型?

python - Python SSH:使用fabric.api替代paramiko

python-2.7 - 解释器在执行 "from xyz import Abc"时做了什么?

python - 我的 Python 函数中有一个生成器;如何返回修改后的列表?

python - SICP 练习 1.41

python - 如何使用 SQLAlchemy Declarative ORM 在声明的属性上设置索引?