ZDB یک دیتابیس Key-Value ساده و سبک با استفاده از SQLite است.
این کتابخانه امکاناتی مثل ذخیرهسازی خودکار، صف تغییرات (queue)، کش داخلی، عملیات اتمیک و پشتیبانی از مدلها را فراهم میکند تا ذخیرهسازی محلی سریع و راحت باشد، بدون نیاز به دیتابیس کامل.
- رابط کاربری ساده Key-Value (
db[key] = value) - پشتیبانی از انواع دادهها:
int,str,float,list,dictو ساختارهای تو در تو - Proxy types:
ZValue,ZList,ZDictبرای track خودکار تغییرات و ذخیرهسازی - ذخیره خودکار و صف تغییرات برای عملکرد بهتر
- کش داخلی برای افزایش سرعت خواندن دادهها
- پشتیبانی از backup دستی یا دورهای
- عملیات اتمیک (
increment,append_if_not_exists) - مدیریت تراکنشها (
with db.transaction():) - پشتیبانی اختیاری از Model با type hints و multi-table
- پشتیبانی از namespace برای چند جدول در یک دیتابیس
- رمزگذاری اختیاری با SQLCipher
- نسخه سینک (sync) کامل، نسخه async جداگانه
نسخه سینک ZDB با کتابخانههای داخلی پایتون کار میکند:
sqlite3, json, threading, os, shutil و غیره.
pip install zDataBasefrom zDataBase import DataBase
db = DataBase("users") # بارگذاری دیتابیس db["name"] = "mohammad"
db["profile"] = {"age":17,"skills":["python","fast_rub"]}
db["numbers"] = [1,2,3]
db["numbers"].append(4)
db.save() # سیو)در صورتی که اتو سیو فعال نباید نیاز است)
db.close() # بستن دیتابیس برای آزاد شدن منابع from zDataBase import DataBase, Model
class UserModel(Model): # مدل
age: int
name: str
last_name: str
users = DataBase("users") # دیتابیس
users.register_model(UserModel) # ثبت مدل برای دیتابیس
user = UserModel() # ساخت یک شی برای مدل
user.age = 20 # تنظیم مقدار سن در شی
user.name = "My Name" # تنظیم مقدار نام در شی
user.last_name = "My Last Name" # تنظیم مقدار نام خانوادگی در شی
users.model_save(user, key="user123") # ذخیره شی در دیتابیس با کلید user123
users.close() # بستن دیتابیس برای آزادس سازی منابعfrom zDataBase import DataBase, Model
class UserModel(Model): # مدل
age: int
name: str
last_name: str
users = DataBase("users") # دیتابیس
users.register_model(UserModel) # ثبت مدل برای دیتابیس
user = db.model_get(User,"user123") # گرفتن مقدار مدل
print(user.to_dict()) # تبدیل به دیکشنری برای خواندن
users.close() # بستن دیتابیس