MaseDB Python Client / Клиент MaseDB для Python
Quick Links / Быстрые ссылки
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
git clone https://github.com/maseai/masedb.git
cd masedb
pip install -e .
Quick Start
from masedb import MaseDBClient
client = MaseDBClient(api_key="your_api_key")
client.create_collection("users", "Collection for user data")
document = {
"name": "John Doe",
"email": "john@example.com",
"age": 30
}
result = client.create_document("users", document)
users = client.list_documents("users", {
"age": { "$gt": 25 },
"status": { "$in": ["active", "pending"] },
"$or": [
{ "email": { "$exists": true } },
{ "phone": { "$exists": true } }
]
})
Examples
Check out the examples
directory for complete working examples:
basic_usage.py
- Basic CRUD operations and collection management
advanced_queries.py
- Complex MongoDB-style query operators and array operations
transactions.py
- Transaction management and money transfer examples
async_usage.py
- Asynchronous operations with asyncio
Each example demonstrates different aspects of the library:
Basic Usage
- Creating and managing collections
- Basic CRUD operations with documents
- Using MongoDB-style query operators
- Error handling
Advanced Queries
- Complex MongoDB-style query operators:
- Comparison: $eq, $ne, $gt, $gte, $lt, $lte
- Array: $in, $nin
- Existence: $exists
- Type: $type
- Regex: $regex
- Logical: $or, $and, $not, $nor
- Array operations
- Logical operators
- Type checking
- Regular expressions
- Nested document queries
Transactions
- Starting and managing transactions
- Performing multiple operations within a transaction
- Handling transaction rollbacks
- Error handling in transactions
- Transaction status monitoring
Async Usage
- 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
collections = client.list_collections()
detailed_collections = client.list_collections_detailed()
client.create_collection("users", "Collection for user data")
collection = client.get_collection("users")
client.delete_collection("users")
Documents
documents = client.list_documents("users", {
"age": { "$gt": 25 },
"status": { "$in": ["active", "pending"] },
"$or": [
{ "email": { "$exists": true } },
{ "phone": { "$exists": true } }
]
}, sort={"age": 1, "name": -1}, limit=10)
document = {
"name": "John Doe",
"email": "john@example.com",
"age": 30
}
result = client.create_document("users", document)
document = client.get_document("users", "document_id")
update = {
"$set": { "name": "John Doe" },
"$inc": { "visits": 1 },
"$push": { "tags": { "$each": ["new", "user"] } },
"$currentDate": { "lastModified": true }
}
client.update_document("users", "document_id", update)
client.delete_document("users", "document_id")
Indexes
client.create_index("users", ["email", "age"])
indexes = client.list_indexes("users")
Transactions
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)
Statistics
stats = client.get_stats()
detailed_stats = client.get_detailed_stats()
MongoDB-style Operators
Query Operators
- Comparison:
$eq
, $ne
, $gt
, $gte
, $lt
, $lte
- Array:
$in
, $nin
- Existence:
$exists
- Type:
$type
- Regex:
$regex
- Logical:
$or
, $and
, $not
, $nor
Update Operators
$set
: Set field values
$inc
: Increment numeric values
$mul
: Multiply numeric values
$rename
: Rename fields
$unset
: Remove fields
$min
: Set minimum value
$max
: Set maximum value
$currentDate
: Set current date
$addToSet
: Add unique elements to array
$push
: Add elements to array
$pop
: Remove first/last element from array
$pull
: Remove elements from array by condition
$pullAll
: Remove all specified elements from array
Error Handling
The client provides comprehensive error handling with specific exception types for different error scenarios:
from masedb.exceptions import MaseDBError, BadRequestError, UnauthorizedError
try:
client.create_document("users", {"name": "John"})
except BadRequestError as e:
print(f"Invalid request: {e}")
except UnauthorizedError as e:
print(f"Authentication failed: {e}")
except MaseDBError as e:
print(f"Database error: {e}")
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Русский
Обзор
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
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
Каждый пример демонстрирует различные аспекты библиотеки:
Базовое использование
- Создание и управление коллекциями
- Базовые операции CRUD с документами
- Использование MongoDB-подобных операторов запросов
- Обработку ошибок
Расширенные запросы
- Сложные MongoDB-подобные операторы запросов
- Операции с массивами
- Логические операторы
- Проверку типов
- Регулярные выражения
- Запросы к вложенным документам
Транзакции
- Начало и управление транзакциями
- Выполнение множественных операций в транзакции
- Обработку откатов транзакций
- Обработку ошибок в транзакциях
- Мониторинг статуса транзакций
Асинхронное использование
- Использование асинхронного клиента с asyncio
- Асинхронное управление коллекциями
- Асинхронное выполнение операций CRUD
- Использование транзакций
- Обработку ошибок в асинхронном контексте