gpt4 book ai didi

python - ZODB 等同于有序字典(odict?)

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:29 25 4
gpt4 key购买 nike

我正在做一些 PloneFormGen 的工作。目前 PloneFormGen 在内部将输入的表单条目存储为没有关联列信息的元组。如果添加了新列(表单字段),则现有数据将变得无效。

这可以很容易地避免将数据存储在有序字典中,它保留输入的列顺序和列 ID。

ZODB 是否具有等同于有序字典的数据类型?如果可能甚至使用匹配的 API(Python dict-like 项目操作和访问)?

最佳答案

您可以在 ZODB 中使用任何开箱即用的有序字典实现,但您必须使用 将父对象(引用有序字典实例的对象)标记为已更改parent = odict_instance 每次更改它或将 _p_changed 设置为 True。当然,这会导致父级的新持久记录以及有序的字典实例。

如果您希望有序字典实例本身自动检测更改,您可能必须构建自己的类,因为我不知道任何当前的实现。也就是说,这样做可能非常容易,特别是如果您使用 ZODB PersistentMapping类作为关于如何构建相同的有序版本的模板。不幸的是,您不能将该类用作混合,因为它直接引用 UserDict 方法而不是使用 super() 调用(persistent.Persistent 不是新的-样式类)。

Python 2.7 在标准库中有一个有序的字典类。大概您仍在 Plone 中使用 Python 2.6,因此您必须向后移植它。但是,一旦你将它反向移植,PersistentOrderedDict 实现应该是 PersistentMapping source code 的直接副本。 , UserDict.IterableUserDict 的所有实例都替换为您的 OrderedDict 端口。

关于python - ZODB 等同于有序字典(odict?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869262/

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