# sqloader
A lightweight Python utility for managing SQL migrations and loading SQL from JSON or .sql files.
Supports common relational databases and is designed for simple, clean integration with any Python backend (e.g., FastAPI).
---
## Installation
```powershell
pip install sqloader
```
## Features
- ✅ Easy database migration management
- ✅ Load SQL queries from `.json` or `.sql` files
- ✅ Supports MySQL and SQLite
- ✅ Clean API for integration
- ✅ Lightweight and dependency-minimized
## Quickstart
```python
from sqloader.init import database_init
config = {
"type": "mysql",
"mysql": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "pass",
"database": "mydb"
},
"service": {
"sqloder": "res/sql/sqloader/mysql"
},
"migration": {
"auto_migration": True,
"migration_path": "res/sql/migration/mysql"
},
}
db, sqloader, migrator = database_init(config)
# Example usage
query = sqloader.load_sql("user_info", "user.get_user_by_id")
result = db.select_one(query, (123,))
```
## SQL Loading Behavior
- If the value in the .json file ends with .sql, the referenced file will be loaded from the same directory.
- Otherwise, the value is treated as a raw SQL string.
Example JSON file user.json:
```json
{
"user": {
"get_user_by_id": "SELECT * FROM users WHERE id = %s",
"get_all_users": "user_all.sql"
},
"get_etc": "SELECT * FROM etc"
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/horrible-gh/LogAssist.git",
"name": "sqloader",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "sqloader, sql loader, migration, database migration, MySQL, SQLite, SQL migration, schema management, json sql loader",
"author": "horrible-gh",
"author_email": "horrible <shinjpn1@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/28/6e/c82f1916f015bdf228a9201a2cb0572a4711027284a85c04a582df3b45b8/sqloader-0.1.0.tar.gz",
"platform": null,
"description": "# sqloader\r\n\r\nA lightweight Python utility for managing SQL migrations and loading SQL from JSON or .sql files.\r\nSupports common relational databases and is designed for simple, clean integration with any Python backend (e.g., FastAPI).\r\n\r\n---\r\n\r\n## Installation\r\n\r\n```powershell\r\npip install sqloader\r\n```\r\n\r\n## Features\r\n\r\n- \u2705 Easy database migration management\r\n- \u2705 Load SQL queries from `.json` or `.sql` files\r\n- \u2705 Supports MySQL and SQLite\r\n- \u2705 Clean API for integration\r\n- \u2705 Lightweight and dependency-minimized\r\n\r\n## Quickstart\r\n\r\n```python\r\nfrom sqloader.init import database_init\r\n\r\nconfig = {\r\n \"type\": \"mysql\",\r\n \"mysql\": {\r\n \"host\": \"localhost\",\r\n \"port\": 3306,\r\n \"user\": \"root\",\r\n \"password\": \"pass\",\r\n \"database\": \"mydb\"\r\n },\r\n \"service\": {\r\n \"sqloder\": \"res/sql/sqloader/mysql\"\r\n },\r\n \"migration\": {\r\n \"auto_migration\": True,\r\n \"migration_path\": \"res/sql/migration/mysql\"\r\n },\r\n}\r\n\r\ndb, sqloader, migrator = database_init(config)\r\n\r\n# Example usage\r\nquery = sqloader.load_sql(\"user_info\", \"user.get_user_by_id\")\r\nresult = db.select_one(query, (123,))\r\n\r\n```\r\n\r\n## SQL Loading Behavior\r\n\r\n- If the value in the .json file ends with .sql, the referenced file will be loaded from the same directory.\r\n- Otherwise, the value is treated as a raw SQL string.\r\n\r\nExample JSON file user.json:\r\n\r\n\r\n```json\r\n{\r\n \"user\": {\r\n \"get_user_by_id\": \"SELECT * FROM users WHERE id = %s\",\r\n \"get_all_users\": \"user_all.sql\"\r\n },\r\n \"get_etc\": \"SELECT * FROM etc\"\r\n}\r\n```\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A simple and extensible SQL migration and loader utility for Python.",
"version": "0.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/horrible-gh/sqloader/issues",
"Homepage": "https://github.com/horrible-gh/sqloader"
},
"split_keywords": [
"sqloader",
" sql loader",
" migration",
" database migration",
" mysql",
" sqlite",
" sql migration",
" schema management",
" json sql loader"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "48e5c32051729b18f9c7e6d6a90301f8ec50b5cc91d6fa704b0525d1ac5f7e9e",
"md5": "05ee2e7ccd8eb153bc0359d137e35ba3",
"sha256": "b199b52c63bd4d168189146d52c87a20667b24d30e4ab90d7a5cf2c5bcf3c89e"
},
"downloads": -1,
"filename": "sqloader-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "05ee2e7ccd8eb153bc0359d137e35ba3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 11524,
"upload_time": "2025-07-19T11:16:52",
"upload_time_iso_8601": "2025-07-19T11:16:52.649745Z",
"url": "https://files.pythonhosted.org/packages/48/e5/c32051729b18f9c7e6d6a90301f8ec50b5cc91d6fa704b0525d1ac5f7e9e/sqloader-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "286ec82f1916f015bdf228a9201a2cb0572a4711027284a85c04a582df3b45b8",
"md5": "b7648ddd1ffd68784483064256e9e48d",
"sha256": "6265822649591c32cd46544f485e53d660caf67668e53f9bf8c2f30a7a84475e"
},
"downloads": -1,
"filename": "sqloader-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "b7648ddd1ffd68784483064256e9e48d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 10629,
"upload_time": "2025-07-19T11:16:54",
"upload_time_iso_8601": "2025-07-19T11:16:54.016109Z",
"url": "https://files.pythonhosted.org/packages/28/6e/c82f1916f015bdf228a9201a2cb0572a4711027284a85c04a582df3b45b8/sqloader-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-19 11:16:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "horrible-gh",
"github_project": "LogAssist",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "sqloader"
}