轻量级、灵活的json服务器和客户端

apocrypha的Python项目详细描述


PyPI VersionSupported Python Versionshttps://travis-ci.org/Gandalf-/apocrypha.svg?branch=masterhttps://codecov.io/gh/Gandalf-/apocrypha/branch/master/graph/badge.svg

ApLogyPHA是一个轻量级的、灵活的JSON服务器和用Python编写的客户端。 三。它包括一个客户端库,可以通过python轻松交互, 简单的查询格式允许api轻松地用其他语言编写。

您可以安装带有pip:pip3 install apocrypha

然后就可以启动服务器了:python3 -m apocrypha.server

功能

  • 多线程线程安全的服务器和客户端。所有查询都是原子的。
  • 缓存写入清除缓存,任何查询都将从 如果可能,缓存。
  • nosql没有模式,没有开销,只有您的数据格式 提供。
  • {STR 1 } $JSON<强>将现有的JSON文件服务到网络或从 刮擦。支持无限嵌套字典。
  • fast对于缓存命中率高的工作负载,每秒最多提供20000个查询。 数据库保存在内存中,启动后不进行磁盘读取。
  • persistence写入将排队并每秒保存到磁盘一次。
  • lightweight少于2000行python并且没有外部依赖项 在标准库之外。

示例python api用法,检查pydoc3 apocrypha.client以了解完整用法和 更多的例子。

fromapocrypha.clientimportClientdb=Client()# apocrypha supports lists, strings, and dictionariesforiinrange(0,100):db.append('numbers',value=i)print(db.get('numbers')[:10])# nested dictionaries are allowed!customers={'alice':{'age':30},'bob':{'age':20}}db.set('customers',value=customers)print(db.keys('customers'))# query for sub keys with a simple syntaxprint(db.get('customers','alice','age'))forcustomerindb.keys('customers'):print(db.get('customers',customer,'age'))

如果您希望比 用于客户机应用程序(如shell脚本)的python。

网络协议很简单:以字节为单位发送消息的长度,然后 信息。查询元素由换行符分隔。每条消息以 换行符和换行符包含在消息的长度计算中。

索引

通过键进一步索引到数据库中,然后递归显示所有 键和键下的值。这是遍历数据库的常用方法 收集信息

(dict a, str b, b in a) => a b -> IO

$ d apples granny = good
$ d apples
{'granny': 'good'}
$ d apples granny
good

附加

将列表或字符串追加到现有字符串或列表中。创建左侧如果 它已经不存在了

(none a | str a | list a, str b | list b) => a + b -> none | error

$ d toppings = mushrooms
$ d toppings + pineapple
$ d toppings
mushrooms
pineapple

删除

从列表中删除一个或多个元素。如果结果列表现在只有 包含一个元素,它将被转换为单个元素

(list a, str b | list b, b in a) => a - b -> none | error

$ d sweets = cake pie pizza
$ d sweets - pizza
$ d sweets
cake
pie

分配

指定元素的值。如果右边有多个参数 在赋值的一侧,结果是列表赋值

(any a, str b | list b) => a = b -> none

$ d apple = sauce pie
$ d apple
sauce
pie

按键

显示该值下的键。不递归打印所有键 以及下面的值

dict a => a --keys -> IO | error

$ d stone sand = weak
$ d stone lime = tough
$ d stone --keys
sand
lime

设置

用原始json替换索引的值

(any a, str b, JSON b) => a --set b -> none | error

$ d pasta --set '["spaghetti", "lasgna"]'
$ d pasta
spaghetti
lasagna

编辑

转储密钥的原始json值。

any a => a --edit -> IO

$ d pasta = spaghetti sauce
$ d pasta --edit
'["spaghetti", "sauce"]'

删除

从其父字典中删除任何元素

any a => a --del -> none

$ d apple sauce = good
$ d apple pie = great
$ d apple sauce --del
$ d apple
{'pie': 'great'}

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

推荐PyPI第三方库


热门话题
java LineNumberReader。如果查询行为不正确,则返回readLine()   java包含了一个使用AndroidX的工具栏,这让我的应用程序崩溃了   JVM设置通过“java jar”运行应用程序的最佳实践   java如何获取ImageButton宽度   java Oracle SQLLDR实用程序无响应   列出Java获取对象的arrayList中最常见的元素   java使用带有FlowLayout的getContentpane对布局应用更改,但不起作用为什么?   在java中,我可以在画布上绘制画布吗?   编译游戏代码时发生java异常错误   从firestore获取java Webview失败   java将TableLayout中单元格的内容向右对齐   java无法在发布模式下启动活动(使用proguard安卓optimize配置)   java允许在线程期间进行GUI更新。睡觉   java如何对以变量为列表的列表进行排序   API URL上的java Google云端点异常