Skip to content

Flask CRUD app with SQLite with proper error handling

Notifications You must be signed in to change notification settings

mallajay/FLASK_CRUD-APP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Here’s how you can write a README.md file for your Flask CRUD app with SQLite, explaining the code in db.py and main.py, and providing instructions on how to run the application.

README.md

# Flask CRUD App with SQLite

This is a simple Flask application that demonstrates CRUD (Create, Read, Update, Delete) operations using SQLite as the database. The application includes proper error and exception handling.

## Project Structure

- `db.py`: Contains the `Database` class that handles all database operations.
- `main.py`: The Flask application that provides API endpoints and interacts with the `Database` class.

## Code Explanation

### `db.py`

The `db.py` file is responsible for handling database operations. It defines the `Database` class, which includes methods to perform CRUD operations.

#### Key Components

- **Imports and Setup**
  ```python
  import os
  import sqlite3
  import logging
  ```

Imports necessary modules and sets up logging.

  • Database Class

    class Database:
        def __init__(self, db_path):
            self.db_path = db_path
            self._initialize_database()

    Initializes the database with the given path and ensures that necessary tables are created.

  • Private Methods

    • _get_connection(): Establishes and returns a connection to the SQLite database.
    • _initialize_database(): Creates tables if they do not exist.
  • Public Methods

    • create_user(name, email): Inserts a new user into the users table.
    • get_user(user_id): Retrieves a user by ID.
    • get_all_users(): Retrieves all users.
    • update_user(user_id, name, email): Updates user details by ID.
    • delete_user(user_id): Deletes a user by ID.

    Each method includes proper error handling and logging.

main.py

The main.py file sets up the Flask application and defines API endpoints.

Key Components

  • Imports and Initialization

    import os
    from flask import Flask, request, jsonify
    import db

    Imports necessary modules and initializes the Flask app and Database instance.

  • API Endpoints

    • / (GET)

      @app.route("/")
      def hello_world():
          SECRET_KEY = os.getenv("MY_SECRET")
          print("SECRET_KEY:", SECRET_KEY)
          return "<p>Hello, World!</p>"

      Returns a simple greeting message.

    • /users (POST)

      @app.route("/users", methods=["POST"])
      def create_user():
          ...

      Creates a new user and handles errors like unique constraint violations.

    • /users/<int:user_id> (GET)

      @app.route("/users/<int:user_id>", methods=["GET"])
      def get_user(user_id):
          ...

      Retrieves a user by ID.

    • /users (GET)

      @app.route("/users", methods=["GET"])
      def get_all_users():
          ...

      Retrieves all users.

    • /users/<int:user_id> (PUT)

      @app.route("/users/<int:user_id>", methods=["PUT"])
      def update_user(user_id):
          ...

      Updates user details by ID.

    • /users/<int:user_id> (DELETE)

      @app.route("/users/<int:user_id>", methods=["DELETE"])
      def delete_user(user_id):
          ...

      Deletes a user by ID.

How to Run

  1. Set Up the Environment

    Create a virtual environment and install the required packages.

    python -m venv venv
    source venv/bin/activate  # On Windows use `venv\Scripts\activate`
    pip install flask
  2. Set Up Environment Variables

    Create a .env file in the project root with the following content:

    MY_SECRET=your_secret_key
    PORT=8080
  3. Run the Application

    Start the Flask development server.

    flask run

    Alternatively, you can run the application directly with Python:

    python main.py

    By default, the application will be accessible at http://localhost:8080.

Error Handling

  • Unique Constraint Violation: If you attempt to create a user with an existing email, the application will respond with a 400 Bad Request and a message indicating that the user already exists.
  • Internal Server Errors: Other exceptions will be logged, and the application will respond with a 500 Internal Server Error.

Notes

  • Ensure that your database file and folder structure match the paths used in db.py.
  • Modify the .gitignore file to exclude sensitive files and directories from version control.

### Explanation:

- **Introduction:** Brief overview of the project and its purpose.
- **Project Structure:** Explains the contents and responsibilities of `db.py` and `main.py`.
- **Code Explanation:** Provides details about the functionality of each file and their components.
- **How to Run:** Instructions on setting up the environment, configuring environment variables, and running the application.
- **Error Handling:** Details how the application handles errors.
- **Notes:** Additional tips and considerations.

This `README.md` file will help users understand how to work with your Flask CRUD app and ensure they can set it up and run it properly.

About

Flask CRUD app with SQLite with proper error handling

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages