This repository provides a structured and detailed guide on using Flask-SQLAlchemy to manage models and interact with databases in Flask applications. The goal is to share knowledge about different attributes, column options, and best practices.
flask-sqlalchemy-guide/ βββ README.md # Project overview and introduction βββ setup/ # Environment setup instructions β βββ environment.md βββ models/ # Guides on defining models β βββ basic-models.md # Basic model creation β βββ column-attributes.md # Column options and attributes β βββ relationships.md # Defining relationships (One-to-Many, Many-to-Many) β βββ validations.md # Model constraints and validation βββ database/ # Database creation and management β βββ creating-tables.md # How to create tables β βββ migrations.md # Database migrations with Flask-Migrate βββ examples/ # Practical examples and best practices βββ simple-app/ # Simple Flask app with SQLAlchemy βββ advanced-features/ # Advanced configurations Instructions to set up the environment:
- Installing Flask-SQLAlchemy
- Creating a virtual environment
- Connecting to different databases
Example Configuration:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)Basic structure of defining models and mapping them to tables.
Example:
class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False)Comprehensive list of column attributes:
- Data Types:
db.Integer,db.String,db.Float,db.Boolean, etc. - Common Options:
primary_key=Truenullable=Falseunique=Truedefault=value
Example:
price = db.Column(db.Float, default=0.0, nullable=False) created_at = db.Column(db.DateTime, default=db.func.now())Guide on creating relationships between tables:
- One-to-Many
- Many-to-Many
Example:
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = db.relationship('User', backref='posts')How to apply model-level constraints and validation.
Steps to create tables and manage the database lifecycle.
Creating Tables:
with app.app_context(): db.create_all()How to handle migrations using Flask-Migrate.
A minimal example of a Flask app with a User model.
Examples demonstrating advanced configurations such as:
- Custom Query Methods
- Database Indexing
- Performance Optimization
Feel free to open issues or submit pull requests to improve this guide.
MIT License