《每天5分钟用Flask搭建一个管理系统》 第6章:数据库集成

第6章:数据库集成

6.1 数据库的选择和配置

在Flask中集成数据库,首先需要选择一个数据库系统。常见的选择包括SQLite、MySQL、PostgreSQL等。选择后,需要配置数据库连接字符串。

示例代码:配置数据库

python 复制代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'  # 配置SQLite数据库
db = SQLAlchemy(app)
6.2 SQLAlchemy ORM简介

SQLAlchemy是一个流行的SQL工具包和对象关系映射(ORM)系统,可以用于Flask应用中。

示例代码:安装SQLAlchemy

bash 复制代码
pip install Flask-SQLAlchemy
6.3 数据模型的创建

在Flask中使用SQLAlchemy定义数据模型,这些模型将映射到数据库表。

示例代码:定义数据模型

python 复制代码
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'
6.4 数据库迁移和版本控制

数据库迁移是修改数据库结构(如添加、删除表或字段)的过程。Flask-Migrate是一个扩展,用于处理数据库迁移。

示例代码:安装Flask-Migrate

bash 复制代码
pip install Flask-Migrate

示例代码:初始化Flask-Migrate

python 复制代码
from flask_migrate import Migrate

migrate = Migrate(app, db)

示例代码:创建和应用迁移

bash 复制代码
flask db init  # 初始化迁移目录
flask db migrate -m "Initial migration."  # 生成迁移脚本
flask db upgrade  # 应用迁移到数据库
6.5 操作数据库

使用SQLAlchemy ORM,您可以轻松地添加、查询、更新和删除数据库记录。

示例代码:添加新用户

python 复制代码
new_user = User(username='JohnDoe', email='john@example.com')
db.session.add(new_user)
db.session.commit()

示例代码:查询用户

python 复制代码
user = User.query.filter_by(username='JohnDoe').first()
6.6 总结

本章介绍了如何在Flask应用中集成数据库,包括选择数据库、配置SQLAlchemy、创建数据模型、以及使用Flask-Migrate进行数据库迁移和版本控制。

相关推荐
92year2 小时前
用Google ADK从零搭一个能调工具的AI Agent:Python实操全过程
python·ai·mcp
woxihuan1234562 小时前
SQL删除数据时存在依赖关系_设置外键级联删除ON DELETE
jvm·数据库·python
东风破1372 小时前
DM8达梦共享存储集群DSC搭建步骤
数据库·学习·dm达梦数据库
雪碧聊技术3 小时前
当数据库字段数大于Java实体类属性数时,MyBatis还能映射成功吗?一文详解
数据库·自动映射·mybatis映射机制·java实体类·宽容映射机制
Jetev3 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
蛐蛐蛐3 小时前
昇腾910B4上安装新版本CANN的正确流程
人工智能·python·昇腾
m0_702036533 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
代钦塔拉4 小时前
Qt4 vs Qt5 带参数信号槽的连接方式详解
开发语言·数据库·qt
2401_846339564 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
2601_957780844 小时前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude