用于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了解更多信息。