Metadata-Version: 2.4
Name: pyqt-mysql-tools
Version: 0.1.0
Summary: Small helpers for using PyMySQL safely from PyQt applications.
Author: pyqt-mysql-tools contributors
License-Expression: MIT
Project-URL: Homepage, https://pypi.org/project/pyqt-mysql-tools/
Keywords: pyqt,mysql,pymysql,database,qt
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pymysql>=1.1.0
Provides-Extra: pyqt6
Requires-Dist: PyQt6>=6.5; extra == "pyqt6"
Provides-Extra: pyqt5
Requires-Dist: PyQt5>=5.15; extra == "pyqt5"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Dynamic: license-file

# pyqt-mysql-tools

Helpers for building PyQt applications that talk to MySQL through PyMySQL.

Install for PyQt6:

```bash
pip install "pyqt-mysql-tools[pyqt6]"
```

Install for PyQt5:

```bash
pip install "pyqt-mysql-tools[pyqt5]"
```

Use it from Python as `pyqt_mysql_tools`:

```python
from pyqt_mysql_tools import ConnectionConfig, MySqlClient

config = ConnectionConfig(
    host="localhost",
    user="root",
    password="password",
    database="app_db",
)

client = MySqlClient(config)
rows = client.fetch_all("select id, name from users where active = %s", (True,))
```

Run a query from a Qt worker:

```python
from pyqt_mysql_tools import ConnectionConfig, QueryWorker

worker = QueryWorker(
    ConnectionConfig.from_env(),
    "select id, name from users limit 10",
)
worker.finished.connect(print)
worker.failed.connect(lambda exc: print(f"Query failed: {exc}"))
```

Environment variables supported by `ConnectionConfig.from_env()`:

- `MYSQL_HOST`
- `MYSQL_PORT`
- `MYSQL_USER`
- `MYSQL_PASSWORD`
- `MYSQL_DATABASE`
- `MYSQL_CHARSET`
