Flask SQLALchemy 的使用

时间:2025-03-31 12:03:47

Flask SQLALchemy 的使用

  • 安装 Flask-SQLAlchemy
  • 配置 Flask-SQLAlchemy
  • 定义模型
  • 创建数据库和表
  • 插入和查询数据
  • 更新和删除数据
  • 迁移数据库
  • 总结

Flask-SQLAlchemy 是一个 Flask 扩展,它简化了 Flask 应用中 SQLAlchemy 的使用。SQLAlchemy 是一个强大的 SQL 工具包和对象关系映射(ORM)工具,它支持多种数据库后台。使用 Flask-SQLAlchemy,你可以通过定义 Python 类来创建数据库表,并通过这些类的实例来操作数据库中的数据。

安装 Flask-SQLAlchemy

首先,你需要安装 Flask-SQLAlchemy。这可以通过 pip 完成:

pip install Flask-SQLAlchemy
  • 1

配置 Flask-SQLAlchemy

在你的 Flask 应用中,你需要配置 Flask-SQLAlchemy。这通常在创建 Flask 应用对象后,配置数据库 URI(统一资源标识符)时完成。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 禁用对对象修改的跟踪并减少开销

db = SQLAlchemy(app)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

定义模型

使用 Flask-SQLAlchemy 定义模型非常简单。你只需继承 并定义类属性即可。每个类属性都将映射到数据库表中的一列。

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 f'<User {self.username}>'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

创建数据库和表

在应用首次运行时,你可能需要创建数据库和表。这可以通过调用 db.create_all() 方法完成。

with app.app_context():
    db.create_all()
  • 1
  • 2

插入和查询数据

Flask-SQLAlchemy 提供了丰富的 API 来插入、查询、更新和删除数据。

插入数据

new_user = User(username='example', email='example@')
db.session.add(new_user)
db.session.commit()
  • 1
  • 2
  • 3

查询数据

user = User.query.filter_by(username='example').first()
if user:
    print(user.username)
  • 1
  • 2
  • 3

更新和删除数据

更新数据

user.email = 'newemail@'
db.session.commit()
  • 1
  • 2

删除数据

db.session.delete(user)
db.session.commit()
  • 1
  • 2

迁移数据库

随着应用的发展,你可能需要修改数据库模型。Flask-Migrate 是一个 Flask 扩展,它建立在 Flask-SQLAlchemy 之上,允许你跟踪模型的变化并生成迁移脚本。

首先,安装 Flask-Migrate:

pip install Flask-Migrate
  • 1

然后,在你的 Flask 应用中配置 Flask-Migrate 并使用它生成和应用迁移。

总结

Flask-SQLAlchemy 是一个强大的 Flask 扩展,它简化了在 Flask 应用中使用 SQLAlchemy 的过程。通过定义模型类,你可以轻松地创建数据库表,并通过这些类的实例来操作数据库中的数据。随着应用的增长,Flask-Migrate 可以帮助管理数据库模型的变更。