用于nosql数据库记录版本控制的python库

nosql-versioning的Python项目详细描述


用于nosql记录版本控制的python库。

安装

要在PyPi上安装最新版本, 简单运行:

pip install nosql_versioning

或者要安装最新的开发版本,请运行:

git clone https://github.com/xinhuang/nosql_versioning.git
cd nosql_versioning
python setup.py install

快速教程

>>> fromnosql_versioningimportschema>>> importjson>>>
>>> version,Record=schema(decode=json.loads)>>>
>>> @version()>>> classRecordv0(object):>>> def__init__(self,data):>>> self.old_name=data['old_name']>>>
>>> @version(1)>>> classRecordv1(object):>>> def__init__(self,value=None,*args,data=None):>>> ifdata:>>> self.new_name=data['new_name']>>> else:>>> self.new_name=value>>>
>>> @staticmethod>>> defmigrate(data):>>> data['new_name']=data['old_name']>>> deldata['old_name']>>>
>>> @staticmethod>>> defa_staticmethod(n):>>> print(n*2)>>>
>>> rec=Record('{"_ver": 0, "old_name": 1}')>>> print(rec.new_name)1
>>> rec=Record(value=42)# custom constructor can also be used>>> print(rec.new_name)42
>>> Record.a_staticmethod(42)# static methods defined in the latest version can be used84

API参考

schema(decode=decode, version=get_version)

创建一个类描述符以指定不同版本的记录类,并创建一个记录初始值设定项以从数据实例化最新记录,或将数据迁移到最新版本

Args:
  • ^{tt2}$: Deserialize objects retrieved from database. By default no decoding will be applied.
  • ^{tt3}$: Get version from record. By default it’s ^{tt4}$
Returns:
  • ^{tt3}$: A class descriptor to specify record version.
  • ^{tt6}$: A initializer that to construct defined Record class. Migrate if data is not the latest version.
version(n=0)

指定版本n的记录类的类描述符。

Args:
  • ^{tt8}$: Version. Must be a integer.
Raises:
  • ^{tt9}$: When a version is defined twice.
Record(data=None, *args, **kwargs)

将记录迁移到最新并实例化记录类的初始值设定项

Args:
  • ^{tt11}$: If only this argument is specified, ^{tt12}$ will be used to instantiate the latest record class. (Migrate if needed.)
  • ^{tt13}$, ^{tt14}$: If not only ^{tt11}$ is specified, all arguments will be passed to instantiate the latest record class. No migration.

从版本N-1迁移到N将使用记录类版本N中的静态方法migrate

如果没有指定版本,则从None迁移到0将使用记录类版本0中的静态方法migrate

许可

这个项目是根据麻省理工学院开放源码许可证的条款发布的。意见 license.txt了解更多信息。

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

推荐PyPI第三方库


热门话题
java如何拆分字符串(基于各种分隔符),但不保留空格?   解析。Json格式的txt文件和knime中的java   java Spring rest api为什么在rest api调用的响应中更改了数据类型   升华文本3抛出java。lang.ClassNotFoundException,而记事本++不存在   java Android指纹扫描仪在尝试5次后停止工作?   java Android如何设置精确的重复报警?   java如何使用HTTPGET connect为access API输入用户名和密码   java当测试报告显示没有测试失败时,Gradle为什么说“有失败的测试”?   用Gson实现java获取响应   MapReduce程序中函数错误的java不可映射参数   java spring安全性不符合自动代理的条件   java GWT使用异步回调进行同步/阻塞调用   java奇怪的类数组问题无法在jsp中显示   如何在java中使用PrinterJob使用epl打印条形码   java如何在JTable中居中单元格   将Java Mockito测试转换为Kotlin   html Java正则表达式模式匹配到多个相同标记   testCompile中缺少java Gradle(Android)多项目依赖项   在输入提示后输入字符串时发生java FileNotFoundException