Skip to main content

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-agent
  • datus-sqlalchemy
  • pymysql

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datus_mysql-0.1.3.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datus_mysql-0.1.3-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

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

Hashes for datus_mysql-0.1.3.tar.gz
Algorithm Hash digest
SHA256 409f6eadbe3fcd6bc341e3aef2464ae8ab31165c2365441d6dc108ac7f196300
MD5 7ef12a628fcb36583c482d2276861657
BLAKE2b-256 fc87a78ece2967d5416f8f3a34b665d0b7c330b058628d1ec93d8609ee1725ea

See more details on using hashes here.

File details

Details for the file datus_mysql-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for datus_mysql-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 edf8fd62d7c1410c44dc6f9de08aa742d469aba35f25db54e9ad65f243179d07
MD5 c9ab0d4f01c2dededc0f3f79fcfb120b
BLAKE2b-256 54c0cba00d01f0afb7cf06bde2ad68e4c8008e14d5050d4015dc9cfd61887673

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page