📜  使用 Flask-SQLAlchemy 将 Flask 连接到数据库(1)

📅  最后修改于: 2023-12-03 15:22:11.394000             🧑  作者: Mango

使用 Flask-SQLAlchemy 将 Flask 连接到数据库

简介

Flask-SQLAlchemy 是 Flask 的一个扩展,使得连接和操作数据库变得更加容易。它是 SQLAlchemy 的一个轻量级封装,提供了 ORM 对象映射和 SQLAlchemy 的所有功能。

通过使用 Flask-SQLAlchemy,我们可以在 Flask 应用程序中轻松实现数据库连接、建表、增删改查等操作。

安装

使用 pip 安装:

pip install Flask-SQLAlchemy
配置连接信息

在 Flask 应用程序中,我们需要配置数据库的连接信息。可以将连接信息配置在 Flask 的配置文件中,也可以直接在代码中配置。

在 Flask 配置文件中配置连接信息

示例:

# config.py

SQLALCHEMY_DATABASE_URI = 'mysql://username:password@localhost/db_name'
SQLALCHEMY_TRACK_MODIFICATIONS = False

其中:

  • SQLALCHEMY_DATABASE_URI:数据库的连接信息,支持 MySQL、PostgreSQL、SQLite、Oracle、Microsoft SQL Server 等数据库。
  • SQLALCHEMY_TRACK_MODIFICATIONS:设置为 False,以便在应用程序中禁用 SQLAlchemy 的修改跟踪功能。
直接在代码中配置连接信息

示例:

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
建立模型类

在 Flask-SQLAlchemy 中,模型就是 ORM 映射的类。模型类定义了数据表的结构,以及数据表中每个字段的属性。

示例:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20))
    email = db.Column(db.String(50))
    password = db.Column(db.String(50))

其中:

  • __tablename__:指定数据表的表名。
  • id:主键字段。
  • usernameemailpassword:其他字段。
数据库操作

建立了模型类之后,我们就可以对数据库进行操作了,常见操作包括增、删、改、查。

示例:

from app import db
from app.models import User

# 添加一条数据
user = User(username='alice', email='alice@example.com', password='123456')
db.session.add(user)
db.session.commit()

# 添加多条数据
users = [
    User(username='bob', email='bob@example.com', password='123456'),
    User(username='charlie', email='charlie@example.com', password='123456'),
]
db.session.add_all(users)
db.session.commit()

其中:

  • db.session.add():添加单条数据。
  • db.session.add_all():添加多条数据。
  • db.session.commit():提交事务。

示例:

from app import db
from app.models import User

# 删除一条数据
user = User.query.filter_by(username='alice').first()
db.session.delete(user)
db.session.commit()

# 删除多条数据
users = User.query.filter_by(username='bob') + User.query.filter_by(username='charlie')
for user in users:
    db.session.delete(user)
db.session.commit()

其中:

  • User.query.filter_by():查询符合条件的数据。
  • db.session.delete():删除单条数据。
  • for 循环 + db.session.delete():删除多条数据。
  • db.session.commit():提交事务。

示例:

from app import db
from app.models import User

# 修改一条数据
user = User.query.filter_by(username='alice').first()
user.email = 'alice@example.org'
db.session.commit()

# 修改多条数据
users = User.query.filter_by(password='123456')
for user in users:
    user.password = '654321'
db.session.commit()

其中:

  • User.query.filter_by():查询符合条件的数据。
  • db.session.commit():提交事务。

示例:

from app import db
from app.models import User

# 查询所有数据
users = User.query.all()

# 根据条件查询一条数据
user = User.query.filter_by(username='alice').first()

# 根据条件查询多条数据
users = User.query.filter_by(password='123456').all()

# 查询数据总数
count = User.query.count()

# 分页查询
users = User.query.paginate(page=1, per_page=10)

其中:

  • User.query.all():查询所有数据。
  • User.query.filter_by():查询符合条件的数据。
  • User.query.count():查询数据总数。
  • User.query.paginate():分页查询。
总结

通过使用 Flask-SQLAlchemy,我们可以轻松实现 Flask 应用程序与数据库的连接、建表、增删改查等操作。建立模型、增删改查的操作非常简单,只需要按照模板进行修改即可。