Skip to main content

SQL helper for databases

Project description

🌊 WaveSQL

WaveSQL — лёгкая, но мощная Python-библиотека для безопасной, асинхронной и удобной работы с MySQL и MariaDB.

Разработано WaveTeam под руководством eelus1ve


🚀 Возможности

  • 🔌 Простое подключение к базе данных через config.ini или словарь
  • ⚙️ Автоматическая инициализация структуры БД при первом запуске
  • 🧠 Поддержка вызова хранимых процедур (CALL)
  • 🪝 Защищённые методы (через @protected) — предотвращают прямой вызов критичных функций
  • 🐍 Асинхронная версия с аналогичным API
  • 🪵 Встроенное логирование в базу данных + цветной вывод в консоль (colorama)
  • 🧠 Автоматическая генерация Python-кода (Python Bridge) из SQL-файла
  • 🧩 Гибкая конфигурация: dictionary=True, цветной вывод, pprint, контроль backtrace
  • 🛡️ Отлавливание и логирование ошибок с трассировкой (traceback)
  • 🧪 Защита от неполных или отсутствующих SQL-файлов

📦 Установка

pip install wavesql

Пока не опубликовано на PyPI — клонируй вручную:

git clone https://github.com/WaveTeamDevs/WaveSQL.git
cd WaveSQL
pip install -e .

🧰 Использование

🔹 Простой пример

from wavesql import WaveSQL

db = WaveSQL(
    is_dictionary=True,
    is_console_log=True,
    is_log_backtrace=True,
    is_auto_start=True
)

db.log(level=3, data="All is good!")

🌀 Асинхронная версия

from wavesql.async_version import AsyncWaveSQL

async_db = AsyncWaveSQL(
    is_dictionary=True,
    is_console_log=True,
    is_log_backtrace=True,
    is_auto_start=True
)

await async_db.log(level=3, data="Async logging works!")

Все методы и поведение идентичны синхронной версии

Просто используйте await, и импортируйте из wavesql.async_version


🧠 Генерация Python-кода из SQL

Если в вашей SQL-директории есть файл queries.sql, содержащий блоки -- name: some_query_name, WaveSQL может автоматически сгенерировать Python-код для вызова этих SQL-запросов.

Просто установите флаг is_create_python_bridge=True при инициализации:

db = WaveSQL(
    is_create_python_bridge=True,
    ...
)

В результате будут созданы файлы:

database.py – синхронный интерфейс

asyncdatabase.py – асинхронный интерфейс


🧰 Использование c is_create_python_bridge=True

📁 Структура проекта (До запуска run.py)

database/
├── sql/
│   ├── 2_init_users.sql
│   └── queries.sql
├── run.py

🐍 Файл run.py

from wavesql import WaveSQL

db = WaveSQL(
    config="path_to_my_settings.ini", path_to_sql="database/sql", is_console_log=True,
    is_log_backtrace=True, is_auto_start=True, is_create_python_bridge=True
)

Файлы init инициализирются в базу данных в порядке возврастания цифры

Файл queries.sql используется для автонаписания запросов на 2 моста

Пример queries.sql:

create get_user with query SELECT * FROM users WHERE id = {% extend user_id : int %} LIMIT 1;

Вывод:

def get_user(self, user_id: int):
    return self._db_query("SELECT * FROM users WHERE id = %s LIMIT 1", (user_id, ), fetch=1)

📁 Структура проекта (После запуска run.py)

database/
├── sql/
│   ├── 0_init_db.sql
│   ├── 1_init_logs.sql
│   ├── 2_init_users.sql
│   └── queries.sql
├── __init__.py
├── asyncdatabase.py
├── database.py
├── run.py

🧾 Требования

  • Python 3.12.10+
  • mysql-connector-python
  • colorama

📁 Структура проекта

WaveSQL/
├── wavesql/
│   ├── __init__.py
│   ├── sqlFileObject.py
│   ├── constants.py
│   ├── asyncdatabase.py
│   ├── database.py
│   ├── errors.py
│   ├── config.ini
│   ├── sql/
│      ├── 0_init_db.sql
│      └── 1_init_logs.sql
│   ├── python/
│      ├── __init__.py
│      ├── asyncdatabase.py
│      └── database.py
├── README.md
├── NOTICE
├── LICENSE
├── pyproject.toml
└── requirements.txt

👤 Автор


🔗 Ссылки

  • 🌍 Репозиторий: github.com/WaveTeamDevs/WaveSQL
  • 🧠 Организация: WaveTeamDevs

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

wavesql-1.0.0.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

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

wavesql-1.0.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file wavesql-1.0.0.tar.gz.

File metadata

  • Download URL: wavesql-1.0.0.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for wavesql-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0a89eb3a8d927d3bf654e151028482c81f024f4ade3f6ffce10fb99510853353
MD5 5dd323f72e8dce87de3eaf99ca36b6c6
BLAKE2b-256 44ab30439d658ddb2cd45fc7a4e4d71e85cb014ae79b735ab9c389d2d9569512

See more details on using hashes here.

File details

Details for the file wavesql-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: wavesql-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for wavesql-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6d97dace0c740792af829f548bfb6e7b688e7476032c082b0ba70c8199cf1550
MD5 2c553cbbf2497e5288382b4bc9c2c34a
BLAKE2b-256 e1b74868baa42605bc87dc142eb21e9be1ef3a2a5d4ab199e5105bf1070b7c91

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