Flask-Model模型配置
Flask默认并没有提供任何数据库操作的API
我们可以选择任何适合自己项目的数据库来使用
Flask中可以自己的选择用原生语句实现功能,也可以选择ORM(SQLAlchemy,MongoEngine)
ORM
Flask通过Model操作数据库,不管你数据库的类型是Mysql或者sqlite,Flask自动帮你生成相应数据库类型的SQL语句,所以不需要关注SQL语句和类型,对数据的操作Flask帮我们自动完成,只要会写Model就可以了。
Flask使用对象关系映射(Object Relational Mapping,简称ORM)框架去操控数据库。
ORM(Object Relational Mapping)对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换
Flask的ORM
Flask使用Python自带的ORM:SQLAlchemy
针对于Flask的支持,安装插件flask-sqlalchemy
pip install flask-sqlalchemy
连接SQLite
SQLite连接的URI:
DB_URI = sqlite:///sqlite3.db
连接MySQL
USERNAME = 'root'
PASSWORD = 'root'
HOSTNAME = 'localhost'
PORT='3306'
DATABASE='HelloFlask'
格式:mysql+pymysql://USERNAME:PASSWORD@HOSTNAME:PORT/DATABASE
# 配置URL
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(
USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE
)
在Flask中使用ORM
连接数据库需要指定配置
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI # 配置连接数据库路径DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 禁止对象追踪修改
SQLite数据库连接不需要额外驱动,也不需要用户名和密码
# 在Flask项目中使用
db = SQLAlchemy()
db.init_app(app)
创建模型
class Person(db.Model):
__tablename = 'person'
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(16),unique=True)
字段类型
Integer
Float
String
...
常用约束
primary_key
autoincreament
unique
default
index 为对应列建立索引,提升查询效率
nullable
数据简单操作
创建数据库,表
db.create_all()
删除表
db.drop_all()
在事务中处理,数据插入
db.session.add(object)
db.session.commit()
获取所有数据
Person.query.all()
数据迁移
安装
pip install flask-migrate
初始化
使用app和db进行migrate对象初始化
from flask_migrate import Migrate
migrate = Migrate()
migrate.init_app(app=app,db=db)
数据迁移命令:
在cmd或Terminal先进入项目目录:
然后输入命令
flask db init 创建迁移文件夹migrates,只调用一次
flask db migrate 生成迁移文件
flask db upgrate 执行迁移文件中的升级
flask db downgrade 执行迁移文件中的降级
数据迁移的步骤:
1、安装好数据迁移的包flask-sqlalchemy和flask-migrate
2、在exts.py中初始化Migrate和SQLAlchemy
3、在models中定义好模型
4、在views.py中一定要导入models模块
from .models import *
5、配置好数据库(sqlite3或MySQL)
6、执行数据迁移命令:
6.1 先在cmd或Termial进入项目目录(app.py所在目录)
6.2 然后输入命令:
flask db init 创建迁移文件夹migrates,只调用一次
flask db migrate 生成迁移文件
flask db upgrade 执行迁移文件中的升级
flask db downgrade 执行迁移文件中的降级
7、查看数据库内容
第一次使用需要下载数据库驱动,自己download下载
合集:
Python全栈(Flask)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂