A Python package for building dynamic MySQL-powered web applications with template support
Project description
PyAwaish
PyAwaish is a Flask-based Python framework that simplifies the development of MySQL-powered web applications. It provides a streamlined interface for connecting to a MySQL database, rendering templates, and executing queries dynamically via RESTful APIs.
Features
Dynamic MySQL Configuration: Configure MySQL database settings at runtime via a web interface.
Template Rendering: Built-in support for rendering templates stored in the templates folder.
Query Execution API: Execute MySQL queries dynamically through POST requests.
CRUD Operations: Perform create, read, update, and delete operations programmatically.
RESTful Design: Leverage Flask to expose endpoints for database interactions.
Environment Configuration: Load sensitive credentials securely using environment variables.
Badges
Endpoints
`/`: Displays the MySQL configuration page.
`/home`: Displays the home page.
`/config_mysql`: Accepts a POST request to configure MySQL connection details dynamically.
`/execute_query`: Accepts a POST request to execute MySQL queries or perform operations (e.g., insert, delete, update).
Installation
Clone the repository:
git clone https://github.com/abuawaish/CRUD_App.git cd CRUD_AppInstall the required dependencies:
pip install -r requirements.txtInstall the package:
pip install PyAwaishSet environment variables for database configuration:
export MYSQL_HOST=localhost export MYSQL_USER=root export MYSQL_PASSWORD=your password export MYSQL_DB=mydatabase export SECRET_KEY=your_secret_key
Usage
Running the Application
To start the Mysql Web Application server, instantiate the MysqlApplication class and call its execute method. For example:
from PyAwaish.MysqlApplication import MysqlApplication
if __name__ == "__main__":
# Initialize MysqlApplication with a secret key
# Options:
# 1. Pass the full path of the .env file: MysqlApplication(secret_key=r"full_path_to_env")
# 2. Pass only the file name if it's in the working directory: MysqlApplication(secret_key=".env")
# 3. Leave it empty: MysqlApplication()
# 4. Use a custom string as the secret key:
app = MysqlApplication(secret_key="your_secret_key")
# Execute the application
app.execute()
This will:
Start a Flask server on http://0.0.0.0:5001.
Serve endpoints for configuring and interacting with the MySQL database.
Function Signature:
The execute() function is used to start the Flask server with customizable parameters.
def execute(self, debug_mode: bool = False, port_number: int = 5001, host_address: str = "0.0.0.0") -> None:
Parameters:
debug_mode (bool, optional): Enables or disables Flask’s debug mode. Default is False.
port_number (int, optional): The port number on which the application runs. Default is 5001.
host_address (str, optional): The host address to bind the server. Default is "0.0.0.0" (accessible on all network interfaces).
Example Usage:
app = MysqlApplication()
app.execute(debug_mode=True, port_number=8080, host_address="127.0.0.1")
This will run the application in debug mode on localhost (127.0.0.1) at port 8080.
Initializing MysqlApplication with a Secret Key
The MysqlApplication class from PyAwaish.MysqlApplication requires a secret key for initialization. This secret key is used for configuration, authentication, or security purposes within the application. You can provide the secret key in different ways:
Using a `.env` file (Full Path)
app = MysqlApplication(secret_key=r"C:\path\to\.env")Provide the full path to a .env file that contains necessary environment variables.
Using a `.env` file (Relative Path)
app = MysqlApplication(secret_key=".env")If the .env file is located in the working directory, you can pass just the filename.
Without a Secret Key
app = MysqlApplication()If no secret key is provided, the application may use default settings.
Using a Custom Secret Key String
app = MysqlApplication(secret_key="your_secret_key")You can directly pass a custom string as the secret key.
Setting Up Secret Key with .env File
To securely store and use a secret key in your app, follow these steps:
1. Create a `.env` file in the root directory of your project.
2. Inside the `.env` file, add the following line:
SECRET_KEY = "YOUR_SECRET_KEY"
Executing the Application
After initialization, you can execute the application using:
app.execute()
Configuring MySQL
Navigate to the root endpoint (http://localhost:5001/) to access the configuration page.
Enter the database details (host, username, password, database name) and click on Configure Database.
Upon successful configuration, you will be redirected to the home page.
Executing Queries
Use the /execute_query endpoint to run SQL queries or perform operations. Example request:
POST Request Example:
{ "operation": "insert", "table_name": "users", "columns": "name, email", "values": "'John Doe', 'john@example.com'" }Supported Operations:
insert: Insert data into a table.
delete: Delete data from a table with a condition.
update: Update data in a table with a condition.
fetch_data: Fetch all data from a table.
show_tables: List all tables in the database.
Dependencies
The application requires the following dependencies (listed in requirements.txt):
Flask: Web framework.
Flask-MySQLdb: MySQL connector for Flask.
python-dotenv: It loads environment variables from a .env file into os.environ.
To install them, run:
pip install -r requirements.txt
Environment Variables
MYSQL_HOST: MySQL server hostname (default: localhost).
MYSQL_USER: MySQL username (default: root).
MYSQL_PASSWORD: MySQL password.
MYSQL_DB: Default MySQL database name.
SECRET_KEY: Flask secret key for session security.
Changelog
Refer to CHANGELOG.txt for the complete version history of the project.
License
This project is licensed under the MIT License. See LICENSE.txt for full details.
Contact
For questions or feedback, contact:
Email: abuawaish7@gmail.com
GitHub: https://github.com/abuawaish
[Version 1.6.5] - 2025-02-21
Fixed
Fixed the docstring rendering in MysqlApplication class to ensure proper formatting and display.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyawaish-1.6.5.tar.gz.
File metadata
- Download URL: pyawaish-1.6.5.tar.gz
- Upload date:
- Size: 34.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d32492897fc0c20937b01a673d9dc453d305c562668173eb1be4fa375a0a1c78
|
|
| MD5 |
726f184dcc91192d84328f68fb0d0417
|
|
| BLAKE2b-256 |
c090c3d109bb747fb50061fd52d4d106efb7c41c611f2738124cbc830612c4b3
|
File details
Details for the file PyAwaish-1.6.5-py3-none-any.whl.
File metadata
- Download URL: PyAwaish-1.6.5-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5efd65ad8aedfc84de89c3fcf0eb4a49f091d9a77be9d398d79d39bef4e24453
|
|
| MD5 |
c3f1eacb4707f3e6a30f212e92e462c1
|
|
| BLAKE2b-256 |
05bde0ebe002caefc0c458a2ce2d90c2f50d309869dc86973e7d0ce61a3dfe12
|