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.3rc1.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.3rc1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file datus_mysql-0.1.3rc1.tar.gz.

File metadata

  • Download URL: datus_mysql-0.1.3rc1.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.3rc1.tar.gz
Algorithm Hash digest
SHA256 916f5fd737c188f812b826bbab20c71ffcb2385182749565c80de2e722d4e2a4
MD5 ba06994cffeb43d282fe3cb77e472a50
BLAKE2b-256 66e6d728d94f8d5acfb35b727b6035d4c762c727f3641a204742bcfe6d3886c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for datus_mysql-0.1.3rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 e18972026f8df3d98b287ec7612a57a9043eb9a4abf9e1eed488be03a858eb54
MD5 e187d407cc772905a1f18f8dc0068193
BLAKE2b-256 bb8281e4c5552cdc564411c07ca1ef0399f883a2a2682314aab5b246675c495e

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