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

相关推荐
寻星探路12 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
陌上丨14 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_567814 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ValhallaCoder14 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
ccecw14 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH307314 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道15 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
猫头虎15 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
八零后琐话15 小时前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python