Flask-SQLAlchemy: Setup & Models

🐍 FlaskLesson 7Intermediate

Flask-SQLAlchemy is an extension that adds support for SQLAlchemy to your Flask application, simplifying database connection configuration and model structures.

1 Database Setup & Schema
Python — models.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def create_app():
    app = Flask(__name__)
    app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    db.init_app(app)
    return app

class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    # One-to-many relationship mapping
    posts = db.relationship("Post", backref="author", lazy=True)

class Post(db.Model):
    __tablename__ = "posts"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(200), nullable=False)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
2 Code Challenge
Challenge: Add a new field named created_at to the Post model utilizing SQLAlchemy's DateTime type, setting the default value to the current time.