A Python library for simplified database interactions across SQLite, PostgreSQL, MySQL, SQL Server, and Oracle. SQLPyHelper provides an intuitive API for handling queries, connection pooling, transactions, logging, and backups efficiently.
- 🚀 Features
- 📦 Installation
- ⚙️ Setup Using
.env - 🛠 Usage Examples
- 📂 Project Structure
- 📌 Available Methods in SQLPyHelper
- 🌍 Contributing
- ☕ Support the Project
- Unified connection pooling for multiple databases.
- Automatic reconnection for lost connections.
- Transaction support (BEGIN, ROLLBACK, COMMIT).
- Secure parameterized queries to prevent SQL injection.
- Bulk insertion & dynamic table creation.
- Logging & error handling for better debugging.
- CSV export & database backups.
pip install sqlpyhelper📌 Package on PyPI: SQLPyHelper on PyPI
For local development:
git clone https://github.com/adebayopeter/sqlpyhelper.git
cd sqlpyhelper
pip install -r requirements.txtCreate a .env file in your project root to manage database configurations securely by renaming .env_example.
# .env_example (Rename to .env)
DB_TYPE=postgres
DB_HOST=localhost
DB_USER=your_user
DB_PASSWORD=your_secure_password
DB_NAME=database_name
DB_DRIVER={ODBC Driver 17 for SQL Server}
ORACLE_SID=XE
ORACLE_DB_PORT=1521from dotenv import load_dotenv
import os
load_dotenv()
db_type = os.getenv("DB_TYPE")
host = os.getenv("DB_HOST")
user = os.getenv("DB_USER")
password = os.getenv("DB_PASSWORD")
database = os.getenv("DB_NAME")from sqlpyhelper.db_helper import SQLPyHelper
db = SQLPyHelper() # Auto-detects database type based on `DB_TYPE`db.execute_query("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
db.execute_query("INSERT INTO users (name) VALUES (?)", ("Alice",))
print(db.fetch_all()) # Expected Output: [(1, 'Alice')]
db.close()db.execute_query("CREATE TABLE customers (id SERIAL PRIMARY KEY, name TEXT)")
db.execute_query("INSERT INTO customers (name) VALUES (%s)", ("Bob",))
db.begin_transaction()
db.execute_query("DELETE FROM customers WHERE name=%s", ("Bob",))
db.rollback_transaction() # Undo deletedb.execute_query("CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(100))")
db.execute_query("INSERT INTO users (id, name) VALUES (%s, %s)", (1, "Alice"))
print(db.fetch_by_param("users", "id", 1)) # Expected Output: [(1, 'Alice')]
db.close()db.execute_query("CREATE TABLE orders (order_id INT PRIMARY KEY, item NVARCHAR(100))")
db.insert_bulk("orders", [{"order_id": 1, "item": "Laptop"}, {"order_id": 2, "item": "Mouse"}])
db.backup_table("orders", "orders_backup.csv") # Export data to CSVdb.execute_query("CREATE TABLE employees (id NUMBER PRIMARY KEY, name VARCHAR2(100))")
db.execute_query("INSERT INTO employees (id, name) VALUES (:1, :2)", (1, "Charlie"))
db.setup_connection_pool(min_conn=2, max_conn=10) # Enable pooling for better performance
conn = db.get_connection_from_pool()
db.return_connection_to_pool(conn)📦 SQLPyHelper/
├─ sqlpyhelper/
│ ├─ __init__.py
│ └─ db_helper.py
├─ tests/
│ └─ test_sqlpyhelper.py
├─ .env_example
├─ .gitignore
├─ setup.py
├─ README.md
└─ requirements.txt
| Method | Description |
|---|---|
execute_query(query, params=None) |
Executes a SQL query with optional parameters. |
fetch_one() |
Retrieves a single row from query results. |
fetch_all() |
Retrieves all rows from query results. |
fetch_by_param(table, column, value) |
Fetches rows dynamically based on a given parameter. |
create_table(table_name, columns_dict) |
Creates a table dynamically with a dictionary format. |
insert_bulk(table, data_list) |
Inserts multiple rows at once efficiently. |
backup_table(table, backup_file.csv) |
Exports table data to CSV format. |
setup_connection_pool() |
Initializes database connection pooling. |
get_connection_from_pool() |
Fetches a connection from the pool. |
return_connection_to_pool(conn) |
Returns connection back to pool. |
begin_transaction() |
Begins an explicit transaction. |
rollback_transaction() |
Rolls back uncommitted transactions. |
close() |
Closes the database connection safely. |
We welcome contributions from the open-source community! Follow these steps to contribute:
- Fork the repo: SQLPyHelper GitHub Repository
- Clone your fork:
git clone https://github.com/adebayopeter/sqlpyhelper.git
- Create a new branch:
git checkout -b feature-new-functionality
- Make changes, commit, and push:
git commit -m "Added new feature" git push origin feature-new-functionality - Submit a Pull Request!