git支持的时间索引blob存储

gitblobts的Python项目详细描述


gitblobts

gitblobts是一个用于git支持的时间索引blob存储的实验性python包。 即使如此,也避免了用git锁定存储的文件。 如果未启用加密,也可以避免使用此应用程序锁定文件内容。

其目标是确保本地和远程数据的可用性。 它将每个BLB存储在预先存在的本地和远程Git存储库中作为文件。 每个文件名包含一个编码的纳秒时间戳和格式版本号。

考虑到git的pull和push操作,支持协同使用同一个远程repo。 为了防止合并冲突,时间戳与文件名之间有一对多的映射。 这是通过在文件名中包含足够的随机字节来实现的,以确保唯一性。

blob的后续检索按时间范围进行。 此时没有用于删除或覆盖blob的实现方法;这是按设计的。 从包的角度来看,blob一旦被写入,就被认为是只读的。 尝试添加一个具有相同时间戳的BLB作为一个预先存在的BLB将导致一个新的BLUB。

已努力将第三方软件包要求降至最低。

链接

安装

使用python 3.7+,从pypi:pip install -U gitblobts安装包。

用法示例

储存

fromtypingimportOptionalimportdatetime,gitblobts,json,time,urllib.requestoptional_compression_module_name:Optional[str]=[None,'bz2','gzip','lzma'][2]optional_user_saved_encryption_key:Optional[bytes]=[None,gitblobts.generate_key()][1]store=gitblobts.Store('/path_to/preexisting_git_repo',compression=optional_compression_module_name,key=optional_user_saved_encryption_key)store.addblob('a byte encoded string'.encode())store.addblob(b'some bytes'*1000,timestamp=time.time())store.addblob(blob=json.dumps([0,1.,2.2,3]).encode(),timestamp=datetime.datetime.now(datetime.timezone.utc).timestamp())store.addblob(blob=urllib.request.urlopen('https://i.imgur.com/3GmPd7O.png').read())store.addblobs(blobs=[b'first blob',b'another blob'])store.addblobs(blobs=[b'A',b'B'],timestamps=[time.time(),time.time()])

检索

fromtypingimportListfromgitblobtsimportBlob,Storeimporttimestore=Store('/path_to/preexisting_git_repo',compression='gzip',key=b'JVGmuw3wRntCc7dcQHJ5q1noUs62ydR0Nw8HpyllKn8=')blobs:List[Blob]=list(store.getblobs(pull=False))blobs_bytes:List[bytes]=[b.blobforbinblobs]timestamps:List[float]=[b.timestampforbinblobs]blobs2_ascending:List[Blob]=list(store.getblobs(start_time='midnight yesterday',end_time='now'))blobs2_descending:List[Blob]=list(store.getblobs(start_time='now',end_time='midnight yesterday',pull=True))blobs3_ascending:List[Blob]=list(store.getblobs(start_time=time.time()-86400,end_time=time.time(),pull=True))blobs3_descending:List[Blob]=list(store.getblobs(start_time=time.time(),end_time=time.time()-86400))

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

推荐PyPI第三方库


热门话题
java如何在Android Wifi中筛选相同的SSID?   Java中重写接口中异常处理的泛型   java“无效转义序列(有效的是\b\t\n\f\r\”\“\”\)”语法错误   使用JNDI的java NameReadyBoundException   java如何在这个程序上执行算法   java为什么我的应用程序在调试时崩溃而应用程序停止?   Java:while循环未检测到中断条件,但如果块检测到   java如何快速使用jfreechart创建的折线图   java将输入放入JSTL会话变量,以便稍后在屏幕上显示   java在spring boot中加载外部JAR   java Apache NiFi无法使用ojdbc6连接到Oracle 12c。jar或ojdbc8。罐子   java解释StringToWordVector()Weka的输出   java charAt()找不到符号   使用mpjexpress的java阅读控制台输入