Skip to content
/ ZDB Public

This project is designed to simplify working with the sqlite3 database, offers extensive features, and supports all types in Python.

License

Notifications You must be signed in to change notification settings

OandONE/ZDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZDB - پایگاه داده Key-Value سبک بر پایه SQLite

با امنیت SQLite3 و به راحتی داده های پایتون !

ZDB یک دیتابیس Key-Value ساده و سبک با استفاده از SQLite است.
این کتابخانه امکاناتی مثل ذخیره‌سازی خودکار، صف تغییرات (queue)، کش داخلی، عملیات اتمیک و پشتیبانی از مدل‌ها را فراهم می‌کند تا ذخیره‌سازی محلی سریع و راحت باشد، بدون نیاز به دیتابیس کامل.

icon


ZDB » ZereOne Data Base

ویژگی‌ها / Features

  • رابط کاربری ساده 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 جداگانه

نصب / Installation

نسخه سینک ZDB با کتابخانه‌های داخلی پایتون کار می‌کند:
sqlite3, json, threading, os, shutil و غیره.

pip install zDataBase

بارگذاری دیتابیس

from zDataBase import DataBase

db = DataBase("users") # بارگذاری دیتابیس 

ورودی های کلاس DataBase »

  • name_db = str نام دیتابیس
  • auto_save = True سیو شدن خودکار دیتابیس بعد از هر تغییر
  • use_queue = True قرار گرفتن تغییرات در صف
  • queue_interval = 0.5 ذخیره شدن دیتابیس از x ثانیه
  • max_batch = 500 حداکثر تغییرات در یک صف
  • backup = str | None نوع بک آپ » always(بعد از هر تغییر) یا interval(هر backup_interval ثانیه یک بار)
  • backup_interval = 60 مقدار ایستادن برای هر سیو بک آپ
  • use_sqlcipher = False استفاده از رمزنگاری
  • cipher_key = None رمز رمزنگاری
  • cache_enabled = True کش دیتابیس
  • cache_max_items = 10000 حداکثر آیتمی که کش نگه میدارد
  • تنظیم مقدار

    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() # بستن دیتابیس 

    سایر متود ها

  • save() - ذخیره دیتابیس به صورت دستی
  • register_model(model_cls: Type[Model])
  • model_save(model_obj: Model,key:str) ذخیره با شی
  • model_get(model_cls: Type[Model],key:str) گرفتن مقدار از مدل
  • keys() - گرفتن تمامی کلید ها
  • items() - گرفتن تمام آیتم ها
  • close() - بستن دیتابیس برای آزاد شدن منابع
  • drop() - حذف کامل دیتابیس(بدون راه بازگشت بجز بک آپ)
  • clear() - پاکسازی دیتابیس
  • get(key,defult=None) - گرفتن مقدار از دیتابیس
  • Seyyed Mohamad Hosein Moosavi Raja(01)

    About

    This project is designed to simplify working with the sqlite3 database, offers extensive features, and supports all types in Python.

    Resources

    License

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages