各种数据库的类dict接口

persistentdicts的Python项目详细描述


persistentdicts

Build StatusCoverage StatusLicenseSupported Python versions

各种数据库的类似dict的接口

与竞争项目的关键区别

如果你在pypi上搜索,你会发现一些竞争项目:pdicts, durabledict等。persistendict和那些 是:

  • persistendict的实现不保留本地缓存 字典:更改将立即写入数据库。遍历器 也直接在数据库上进行。它允许交互 数据集不适合RAM。
  • 测试套件比所有其他测试套件都要大得多 我看到的实现。如果相关的话,测试已经被移植 来自dict的cpython测试套件。
  • 序列化是在json中完成的,而不是使用pickle。

有问题

不能就地修改词典的值。例如:

>>> import persistentdicts

>>> d = persistentdicts.sqlitedict.SqliteDict()
>>> d["a"] = []
>>> d["a"].append(1)

>>> d["a"] # with a normal dict, you would get [1]
[]

这是因为d["a"]返回 键"a",而不是对python对象的引用。修改此副本 (使用append)不会影响数据库本身。

为了避免这种情况,您应该这样做:

>>> import persistentdicts

>>> d = persistentdicts.sqlitedict.SqliteDict()
>>> d["a"] = []
>>> d["a"] = d["a"] + [1]

>>> d["a"]
[1]

类似地,setdefault也不会按预期工作,因为它不会 返回对存储值的引用,但返回此值的副本。

>>> import persistentdicts

>>> d = persistentdicts.sqlitedict.SqliteDict()
>>> d.setdefault("a", []).append(1)

>>> d["a"]
[]

目前支持的数据库

完成时间:

  • 京都内阁
  • sqlite
  • 卡桑德拉

计划:

  • 级别数据库
  • redis
  • memcachedb
  • 光云

您可以在bug tracker上请求新格式。

简短文档

persistentdicts.sqlitedict.sqlitedict

persistentdicts.sqlitedict.SqliteDict(path=":memory:", table="dict", isolation_level="DEFERRED", *args, **kwargs)
  • path是要存储数据的文件的路径
  • dict是要在此文件中使用的表
  • isolation_level是用于所有事务的隔离级别。 见sqlite documentation 更多细节。
  • 剩余的参数*args, **kwargs用于填充 字典(像普通的dict

持久性dicts.kyotocabinetdict.kyotocabinetdict

persistentdicts.kyotocabinetdict.KyotoCabinetDict(path, *args, **kwargs)
  • path是要存储数据的文件的路径。 文件扩展名很重要,它将决定使用哪种格式 内部使用(必须是.kch、.kct、.kcd、.kcf或 .kcx)。见kyotocabinet documentation 更多细节。
  • 剩余的参数*args, **kwargs用于填充 字典(像普通的dict

持续dicts.cassandradict.cassandradict

persistentdicts.cassandradict.CassandraDict(contact_points=("127.0.0.1",), port=9042, keyspace="dict", table="dict", *args, **kwargs)
  • contact_points是IP地址的初始列表,这些地址是 卡桑德拉星系团。卡桑德拉司机会自动发现 集群的其余部分。
  • port是卡桑德拉运行的端口。
  • keyspace是用于存储数据的键空间。这个键空间将 如果在cassandradict上调用方法.delete(),则被删除
  • table是用于存储数据的表的名称。
  • 剩余的参数*args, **kwargs用于填充 字典(像普通的dict

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用NTLM在自定义web服务器应用程序上支持SSO?   java在SaveInstanceState上保存和恢复ArrayQue   java从IO迁移到NIO网络,非法阻塞模式异常   Hibernate对象模型设计中的java多对多关系   java如何执行HelloWorld脚本   java Swing数据绑定框架   C++在高级文本3编译后的CMD上输出java程序   java是否在类图中包含JavaScript和HTML文件?   java将具有多个关系的属性映射到另一个类的属性   java Objectify和TimerTask:没有为此线程注册API环境   HibernatePersistence提供程序中出现java错误   java如何检查IP是否可访问,代码名为one   java如何加载和使用一个或多个。类文件?