MySQL database adapter for Datus
Project description
datus-mysql
MySQL database adapter for Datus.
Installation
pip install datus-mysql
This will automatically install the required dependencies:
datus-agentdatus-sqlalchemypymysql
Usage
The adapter is automatically registered with Datus when installed. Configure your database connection in your Datus configuration:
database:
type: mysql
host: localhost
port: 3306
username: root
password: your_password
database: your_database
Or use programmatically:
from datus_mysql import MySQLConnector, MySQLConfig
# Using config object
config = MySQLConfig(
host="localhost",
port=3306,
username="root",
password="your_password",
database="mydb"
)
connector = MySQLConnector(config)
# Or using dict
connector = MySQLConnector({
"host": "localhost",
"port": 3306,
"username": "root",
"password": "your_password",
"database": "mydb"
})
# Test connection
connector.test_connection()
# Execute query
result = connector.execute({"sql_query": "SELECT * FROM users LIMIT 10"})
print(result.sql_return)
# Get table list
tables = connector.get_tables(database_name="mydb")
print(f"Tables: {tables}")
# Get table schema
schema = connector.get_schema(database_name="mydb", table_name="users")
for column in schema:
print(f"{column['name']}: {column['type']}")
Features
- Full CRUD operations (SELECT, INSERT, UPDATE, DELETE)
- DDL execution (CREATE, ALTER, DROP)
- Metadata retrieval (tables, views, schemas)
- Sample data extraction
- Multiple result formats (pandas, arrow, csv, list)
- Connection pooling and management
- Comprehensive error handling
Testing
Quick Start
# Unit tests (no database required, < 0.1s)
uv run pytest tests/ -m "not integration" -v
# Acceptance tests (core functionality, < 1s)
uv run pytest tests/ -m "acceptance and not integration" -v
# All tests with coverage
uv run pytest tests/ -v --cov=datus_mysql --cov-report=term-missing
Integration Tests (Requires MySQL)
# Start MySQL container
docker-compose up -d
# Run integration tests
uv run pytest tests/integration/ -m integration -v
# Run all acceptance tests (unit + integration)
uv run pytest tests/ -m acceptance -v
# Stop MySQL
docker-compose down
Test Statistics
- Unit Tests: 50 tests (config, connector, identifiers)
- Integration Tests: 20 tests (connection, CRUD, DDL, metadata)
- Acceptance Tests: 21 tests (15 unit + 6 integration)
- Total: 70 tests
For more details, see tests/integration/README.md.
Development
Setup
# Install dependencies
uv sync
# Install in editable mode
uv pip install -e .
Running Tests
# Fast unit tests
uv run pytest tests/ -m "not integration" -v
# With coverage
uv run pytest tests/ --cov=datus_mysql --cov-report=html
open htmlcov/index.html
Code Quality
# Format code
black datus_mysql tests
isort datus_mysql tests
# Lint
ruff check datus_mysql tests
flake8 datus_mysql tests
Requirements
- Python >= 3.12
- MySQL >= 5.7 or MariaDB >= 10.2
- datus-agent >= 0.3.0
- datus-sqlalchemy >= 0.1.0
- pymysql >= 1.0.0
License
Apache License 2.0
Project details
Release history Release notifications | RSS feed
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 datus_mysql-0.1.3.tar.gz.
File metadata
- Download URL: datus_mysql-0.1.3.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
409f6eadbe3fcd6bc341e3aef2464ae8ab31165c2365441d6dc108ac7f196300
|
|
| MD5 |
7ef12a628fcb36583c482d2276861657
|
|
| BLAKE2b-256 |
fc87a78ece2967d5416f8f3a34b665d0b7c330b058628d1ec93d8609ee1725ea
|
File details
Details for the file datus_mysql-0.1.3-py3-none-any.whl.
File metadata
- Download URL: datus_mysql-0.1.3-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edf8fd62d7c1410c44dc6f9de08aa742d469aba35f25db54e9ad65f243179d07
|
|
| MD5 |
c9ab0d4f01c2dededc0f3f79fcfb120b
|
|
| BLAKE2b-256 |
54c0cba00d01f0afb7cf06bde2ad68e4c8008e14d5050d4015dc9cfd61887673
|