📅  最后修改于: 2023-12-03 15:22:11.394000             🧑  作者: Mango
Flask-SQLAlchemy 是 Flask 的一个扩展,使得连接和操作数据库变得更加容易。它是 SQLAlchemy 的一个轻量级封装,提供了 ORM 对象映射和 SQLAlchemy 的所有功能。
通过使用 Flask-SQLAlchemy,我们可以在 Flask 应用程序中轻松实现数据库连接、建表、增删改查等操作。
使用 pip 安装:
pip install Flask-SQLAlchemy
在 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
:主键字段。username
、email
、password
:其他字段。建立了模型类之后,我们就可以对数据库进行操作了,常见操作包括增、删、改、查。
示例:
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 应用程序与数据库的连接、建表、增删改查等操作。建立模型、增删改查的操作非常简单,只需要按照模板进行修改即可。