Skip to main content

Introduction to Flask-SQLAlchemy

Introduction

Welcome to an introduction to Flask-SQLAlchemy! This tutorial is designed to provide an easy-to-understand, step-by-step guide for beginners who wish to learn about integrating databases into their Flask applications using SQLAlchemy.

What is Flask-SQLAlchemy?

Flask-SQLAlchemy is an extension for Flask that simplifies the integration of SQLAlchemy into your application. SQLAlchemy is a SQL toolkit and Object-Relational Mapping (ORM) system for Python, which provides a full suite of well known enterprise-level persistence patterns. To put it simply, Flask-SQLAlchemy is a tool that allows your Flask application to interact with SQL databases.

Why Use Flask-SQLAlchemy?

SQLAlchemy allows you to work with relational databases in Python in an object-oriented way. This means you can interact with your databases like you would with Python objects. It also provides a series of data manipulation methods that make it easy to perform database operations. Flask-SQLAlchemy takes this a step further by providing useful defaults and extra helpers that make it easier to accomplish common tasks.

Getting Started

Before we start, ensure that you have Flask-SQLAlchemy installed. If not, you can install it using pip:

pip install Flask-SQLAlchemy

Configuring Flask-SQLAlchemy

To use Flask-SQLAlchemy in your application, you need to configure it with the location of your database. Here's a simple configuration:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)

This configuration specifies that our database is a SQLite database named 'test.db', located in the /tmp directory.

Defining Models

In Flask-SQLAlchemy, a model is a Python class that represents a database table. Here is an example of a simple model:

class User(db.Model):
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)

def __repr__(self):
return '<User %r>' % self.username

In this model, we have a table called 'User' with three columns: 'id', 'username', and 'email'. The 'id' column is our primary key.

Creating Tables

To create the tables in our database, we use the db.create_all() method:

db.create_all()

After running this command, SQLAlchemy will create a new SQLite database file in the specified location with the defined tables.

Adding Records

To add a new record to our database, we first create an instance of our model, then add and commit it to our session:

user = User(username='admin', email='[email protected]')
db.session.add(user)
db.session.commit()

Querying Data

Flask-SQLAlchemy provides a simple way to query data from our database:

users = User.query.all()

This will return a list of all User instances. To filter this query, you can use filter methods:

admin = User.query.filter_by(username='admin').first()

This query returns the first User instance with the username 'admin'.

Conclusion

We've only scratched the surface of what you can do with Flask-SQLAlchemy. However, you should now have a basic understanding of how to integrate Flask-SQLAlchemy into your application, define models, create tables, add records, and query data. As you continue to explore Flask-SQLAlchemy, you'll discover its full potential and how it can greatly simplify your database interactions in Flask.