《每天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进行数据库迁移和版本控制。

相关推荐
丁引16 分钟前
《数据清洗的艺术:如何用20行核心逻辑优雅地删除无标签图片》
前端·数据库·python
雨辰AI17 分钟前
K8s 数据库 Secret 加密实战|密码明文漏洞彻底修复,等保密评双合规(金仓 / 达梦双库适配)
数据库·容器·kubernetes
梦想的旅途220 分钟前
企业微信API二次开发:外部群模块功能清单与全场景对接
java·python·企业微信
05664632 分钟前
Python高级——迭代器
开发语言·python·学习
XR12345678833 分钟前
学校图书馆网络改造,方案谁更优?
网络·数据库·php
梦想的旅途241 分钟前
企业微信自动化:自动发送文本、图片、文件
前端·数据库·microsoft
IvorySQL1 小时前
PostgreSQL 日报|复制槽泄漏修复(8 月 6 日)
数据库·postgresql
way_hj1 小时前
Flask笔记(2)快速web项目
笔记·flask·vue·web
XWalnut1 小时前
MySQL入门到精通
数据库·mysql
老白干1 小时前
基于 Spring AOP 的操作日志记录:以 DeptController 增删接口为例
java·python·spring