有,CyberDB
CyberDB 是一个轻量级的 Python 内存数据库。它旨在利用 Python 内置数据结构字典、列表作数据存储,通过 TCP 套接字高效通信,并提供了数据持久化。该数据库的亮点在于它使用了 Pythonic 的方式编程,你可以像使用字典和列表一样使用 CyberDB。
先来搭建一个cyberdb服务器
import time服务端搭建好了,现在客户端来访问数据库
import cyberdb
db = cyberdb.Server()
# 数据持久化,备份文件为 data.cdb,备份周期 900 秒一次。
db.set_backup('data.cdb', cycle=900)
# 设置 TCP 地址、端口号、密码,生产环境中密码建议使用大小写字母和数字的组合。
# start 方法不会阻塞运行,若希望该操作阻塞,请使用 run 方法代替 start,参数不变。
db.start(host='127.0.0.1', port=9980, password='123456')
while True:
time.sleep(10000)
#!/usr/local/python3/bin/python3详细文档:https://pypi.org/project/CyberDB/
# -*- coding: utf-8 -*
import cyberdb
# 生成客户端实例并连接。
client = cyberdb.connect(host='127.0.0.1', port=9980, password='123456')
#生成 proxy 对象
# 生成本次请求的 proxy。
proxy = client.get_proxy()
# 从连接池自动获取数据库连接。
proxy.connect()
#建议在每个线程(或协程)中单独生成 proxy 对象,并通过 connect 方法获取数据库连接。你只需在操作完成后使用 close 方法归还连接即可,归还后的连接由 client 对象智能管理。
#操作 proxy 对象
#创建 CyberDict 和 CyberList
# 在数据库中分别创建类型为 CyberDict 的 dict1、dict2 表,
# 类型为 CyberList 的 list1 表。
proxy.create_cyberdict('dict1')
proxy.create_cyberdict('dict2')
proxy.create_cyberlist('list1')
dict1 = proxy.get_cyberdict('dict1')
dict2 = proxy.get_cyberdict('dict2')
list1 = proxy.get_cyberlist('list1')
#此处获取的 dict1、dict2、list1 均为网络对象,数据通过 TCP 传输。三个对象受 proxy 控制,当调用 proxy.close() 归还连接后,三个对象也会失效。同样,使用 proxy.connect() 可重新从连接池获取连接,dict1、dict2、list1 也变为可用。
#了解此操作后,你便可以像操作 Dictionaries 一样操作 dict1、dict2,像操作 Lists 一样操作 list1 了!(CyberDict 和 CyberList 支持 Dictionaries、Lists 的大部分方法)
#示例如下
#CYBERDICT 常用操作
#在 dict1 和 dict2 中新增键值对
dict1[0] = 100
dict1['test'] = 'Hello CyberDB!'
dict2[0] = 200
#获取对应的值
dict1.get(0)
网友回复