Python client library for Mase Database API
Project description
MaseDB Python Client / Клиент MaseDB для Python
Quick Links / Быстрые ссылки
- 🌐 Website / Сайт
- 📚 Documentation / Документация
- 💬 Support / Поддержка
- 📧 Email / Почта
- 📦 PyPI Package
- 📂 Examples / Примеры
- ⭐ GitHub Repository
Table of Contents / Содержание
English
Overview
MaseDB Python Client is a powerful library for interacting with the Mase Database API. It provides both synchronous and asynchronous interfaces for database operations, supporting MongoDB-style queries, transactions, indexing, and comprehensive error handling.
Features
- ✨ Synchronous and asynchronous client interfaces
- 🔍 MongoDB-style query operators
- 🔄 Transaction support
- 📊 Index management
- 🛡️ Comprehensive error handling
- 📈 Statistics and monitoring
- 📦 Batch operations support
- 📝 Type hints and documentation
Installation
From PyPI
pip install masedb
From GitHub
# Clone the repository
git clone https://github.com/maseai/masedb.git
# Navigate to the project directory
cd masedb
# Install in development mode
pip install -e .
Quick Start
from masedb import MaseDBClient
# Initialize client with your API key
client = MaseDBClient(api_key="your_api_key")
# Create a collection
client.create_collection("users", "Collection for user data")
# Create a document
document = {
"name": "John Doe",
"email": "john@example.com",
"age": 30
}
result = client.create_document("users", document)
Examples
Check out the examples directory for complete working examples:
basic_usage.py- Basic CRUD operations and collection managementadvanced_queries.py- Complex MongoDB-style query operators and array operationstransactions.py- Transaction management and money transfer examplesasync_usage.py- Asynchronous operations with asyncio
Each example demonstrates different aspects of the library:
Basic Usage
# basic_usage.py demonstrates:
- Creating and managing collections
- Basic CRUD operations with documents
- Using MongoDB-style query operators
- Error handling
Advanced Queries
# advanced_queries.py demonstrates:
- Complex MongoDB-style query operators
- Array operations
- Logical operators
- Type checking
- Regular expressions
- Nested document queries
Transactions
# transactions.py demonstrates:
- Starting and managing transactions
- Performing multiple operations within a transaction
- Handling transaction rollbacks
- Error handling in transactions
- Transaction status monitoring
Async Usage
# async_usage.py demonstrates:
- Using the async client with asyncio
- Managing collections asynchronously
- Performing CRUD operations asynchronously
- Using transactions
- Error handling in async context
To run an example:
python examples/basic_usage.py
API Reference
Collections
# List all collections
collections = client.list_collections()
# Create a new collection
client.create_collection("users", "Collection for user data")
# Get collection details
collection = client.get_collection("users")
# Delete a collection
client.delete_collection("users")
Documents
# List all documents in a collection
documents = client.list_documents("users")
# Create a new document
document = {
"name": "John Doe",
"email": "john@example.com",
"age": 30
}
result = client.create_document("users", document)
# Get a specific document
document = client.get_document("users", "document_id")
# Update a document
updated_doc = {
"name": "John Doe",
"email": "john.doe@example.com",
"age": 31
}
client.update_document("users", "document_id", updated_doc)
# Delete a document
client.delete_document("users", "document_id")
Indexes
# Create an index
client.create_index("users", ["email", "age"])
# List all indexes
indexes = client.list_indexes("users")
Transactions
# Start a transaction
transaction = client.start_transaction()
transaction_id = transaction["transaction_id"]
# Commit a transaction
client.commit_transaction(transaction_id)
# Rollback a transaction
client.rollback_transaction(transaction_id)
# Get transaction status
status = client.get_transaction_status(transaction_id)
Statistics
# Get database statistics
stats = client.get_stats()
# Get detailed statistics (admin only)
detailed_stats = client.get_detailed_stats()
Batch Operations
def batch_create_documents(client, collection_name, documents):
"""Create multiple documents in parallel"""
return [client.create_document(collection_name, doc) for doc in documents]
# Usage
documents = [
{"name": "John Doe", "email": "john@example.com"},
{"name": "Jane Smith", "email": "jane@example.com"},
{"name": "Bob Johnson", "email": "bob@example.com"}
]
results = batch_create_documents(client, "users", documents)
Error Handling
The library provides specific exceptions for different error cases:
from masedb import (
MaseDBError,
BadRequestError,
UnauthorizedError,
ForbiddenError,
NotFoundError,
ConflictError,
ValidationError,
RateLimitError,
InternalError,
ServiceUnavailableError
)
try:
client.create_collection("users")
except UnauthorizedError as e:
print(f"Authentication failed: {e.message}")
except ValidationError as e:
print(f"Validation error: {e.message}")
print(f"Details: {e.details}")
except MaseDBError as e:
print(f"An error occurred: {e.message}")
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/masedb.git
- Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install development dependencies:
pip install -e ".[dev]"
- Run tests:
pytest
Pull Request Process
- Update the README.md with details of changes if needed
- Update the documentation if needed
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
License
MIT License
Русский
Обзор
MaseDB Python Client - это мощная библиотека для взаимодействия с API базы данных Mase. Она предоставляет как синхронный, так и асинхронный интерфейсы для операций с базой данных, поддерживает MongoDB-подобные запросы, транзакции, индексацию и комплексную обработку ошибок.
Возможности
- ✨ Синхронный и асинхронный интерфейсы клиента
- 🔍 MongoDB-подобные операторы запросов
- 🔄 Поддержка транзакций
- 📊 Управление индексами
- 🛡️ Комплексная обработка ошибок
- 📈 Статистика и мониторинг
- 📦 Поддержка пакетных операций
- 📝 Подсказки типов и документация
Установка
Из PyPI
pip install masedb
Из GitHub
# Клонировать репозиторий
git clone https://github.com/maseai/masedb.git
# Перейти в директорию проекта
cd masedb
# Установить в режиме разработки
pip install -e .
Быстрый старт
from masedb import MaseDBClient
# Инициализация клиента с вашим API ключом
client = MaseDBClient(api_key="ваш_api_ключ")
# Создание коллекции
client.create_collection("users", "Коллекция для данных пользователей")
# Создание документа
document = {
"name": "Иван Иванов",
"email": "ivan@example.com",
"age": 30
}
result = client.create_document("users", document)
Примеры
В директории examples вы найдете полные рабочие примеры:
basic_usage.py- Базовые операции CRUD и управление коллекциямиadvanced_queries.py- Сложные MongoDB-подобные операторы запросов и операции с массивамиtransactions.py- Управление транзакциями и примеры денежных переводовasync_usage.py- Асинхронные операции с asyncio
Каждый пример демонстрирует различные аспекты библиотеки:
Базовое использование
# basic_usage.py демонстрирует:
- Создание и управление коллекциями
- Базовые операции CRUD с документами
- Использование MongoDB-подобных операторов запросов
- Обработку ошибок
Расширенные запросы
# advanced_queries.py демонстрирует:
- Сложные MongoDB-подобные операторы запросов
- Операции с массивами
- Логические операторы
- Проверку типов
- Регулярные выражения
- Запросы к вложенным документам
Транзакции
# transactions.py демонстрирует:
- Начало и управление транзакциями
- Выполнение множественных операций в транзакции
- Обработку откатов транзакций
- Обработку ошибок в транзакциях
- Мониторинг статуса транзакций
Асинхронное использование
# async_usage.py демонстрирует:
- Использование асинхронного клиента с asyncio
- Асинхронное управление коллекциями
- Асинхронное выполнение операций CRUD
- Использование транзакций
- Обработку ошибок в асинхронном контексте
Для запуска примера:
python examples/basic_usage.py
Справочник API
Коллекции
# Получение списка всех коллекций
collections = client.list_collections()
# Создание новой коллекции
client.create_collection("users", "Коллекция для данных пользователей")
# Получение информации о коллекции
collection = client.get_collection("users")
# Удаление коллекции
client.delete_collection("users")
Документы
# Получение всех документов в коллекции
documents = client.list_documents("users")
# Создание нового документа
document = {
"name": "Иван Иванов",
"email": "ivan@example.com",
"age": 30
}
result = client.create_document("users", document)
# Получение конкретного документа
document = client.get_document("users", "document_id")
# Обновление документа
updated_doc = {
"name": "Иван Иванов",
"email": "ivan.ivanov@example.com",
"age": 31
}
client.update_document("users", "document_id", updated_doc)
# Удаление документа
client.delete_document("users", "document_id")
Индексы
# Создание индекса
client.create_index("users", ["email", "age"])
# Получение списка всех индексов
indexes = client.list_indexes("users")
Транзакции
# Начало транзакции
transaction = client.start_transaction()
transaction_id = transaction["transaction_id"]
# Подтверждение транзакции
client.commit_transaction(transaction_id)
# Откат транзакции
client.rollback_transaction(transaction_id)
# Получение статуса транзакции
status = client.get_transaction_status(transaction_id)
Статистика
# Получение статистики базы данных
stats = client.get_stats()
# Получение детальной статистики (только для администраторов)
detailed_stats = client.get_detailed_stats()
Пакетные операции
def batch_create_documents(client, collection_name, documents):
"""Создание нескольких документов параллельно"""
return [client.create_document(collection_name, doc) for doc in documents]
# Использование
documents = [
{"name": "Иван Иванов", "email": "ivan@example.com"},
{"name": "Мария Петрова", "email": "maria@example.com"},
{"name": "Алексей Сидоров", "email": "alexey@example.com"}
]
results = batch_create_documents(client, "users", documents)
Обработка ошибок
Библиотека предоставляет специфические исключения для различных случаев ошибок:
from masedb import (
MaseDBError,
BadRequestError,
UnauthorizedError,
ForbiddenError,
NotFoundError,
ConflictError,
ValidationError,
RateLimitError,
InternalError,
ServiceUnavailableError
)
try:
client.create_collection("users")
except UnauthorizedError as e:
print(f"Ошибка аутентификации: {e.message}")
except ValidationError as e:
print(f"Ошибка валидации: {e.message}")
print(f"Детали: {e.details}")
except MaseDBError as e:
print(f"Произошла ошибка: {e.message}")
Участие в разработке
Мы приветствуем ваш вклад! Подробности смотрите в Руководстве по участию в разработке.
Настройка окружения разработки
- Форкните репозиторий
- Клонируйте ваш форк:
git clone https://github.com/ваш-username/masedb.git
- Создайте виртуальное окружение:
python -m venv venv source venv/bin/activate # На Windows: venv\Scripts\activate
- Установите зависимости для разработки:
pip install -e ".[dev]"
- Запустите тесты:
pytest
Процесс создания Pull Request
- Обновите README.md при необходимости
- Обновите документацию при необходимости
- Добавьте тесты для новой функциональности
- Убедитесь, что все тесты проходят
- Отправьте pull request
Лицензия
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file masedb-0.1.1.tar.gz.
File metadata
- Download URL: masedb-0.1.1.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62cbf31b545873bba01113afc29fe231064611c8b40120b1453fdfe3671783ab
|
|
| MD5 |
2268713ebc13264eb039fecb9484bec6
|
|
| BLAKE2b-256 |
16e4e04d57046bd085c6d97ef79ee55604dce0ed0ce8161d3cfc16deba089d18
|
File details
Details for the file masedb-0.1.1-py3-none-any.whl.
File metadata
- Download URL: masedb-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd1d67300bc3b1c1733f1548992e44f0c94dbeeda56ad1b049ab27d970191d4d
|
|
| MD5 |
49e829ba00fef4924dfd75783a595802
|
|
| BLAKE2b-256 |
eb9cccf5abc6e9312fbbd38cf0df4096da910cb7602340be15456f8823bfda98
|