Flask开发之数据库 (SQLAlchemy)的配置以及增删改查

  • 1.在Flask中配置SQLAlchemy
    • 1 安装flask-sqlalchemy
    • 2 安装flask-mysqldb
    • 3 在代码中的配置:
  • 2.常用的SQLAlchemy字段类型
  • 3.常用的SQLAlchemy列选项
  • 4.常用的SQLAlchemy关系选项
  • 5.在视图函数中定义模型类
  • 6.数据库的增删改查
    • 1 常用的SQLAlchemy查询过滤器
    • 2.常用的SQLAlchemy查询执行器
    • 3 插入一条或者多条数据
    • 4.删除数据
    • 5.修改数据
    • 6.查询数据
  • 7.数据库迁移
    • 1 安装Flask-Migrate和flask_script
    • 2 添加迁移代码
    • 3 创建迁移仓库
    • 4 创建迁移脚本
    • 5 更新数据库
    • 6 回退数据库

前言:SQLAlchemy是一个关系型数据库框架,它提供了高层的ORM和底层的原生数据库的操作。flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展。


1.在Flask中配置SQLAlchemy

1 安装flask-sqlalchemy

pip install flask-sqlalchemy

2 安装flask-mysqldb

pip install flask-mysqldb

3 在代码中的配置:

class Config(object):"""配置参数"""# sqlalchemy的配置参数SQLALCHEMY_DATABASE_URI = "mysql://root:root@127.0.0.1:3306/flask_demo"# 设置sqlalchemy自动更跟踪数据库SQLALCHEMY_TRACK_MODIFICATIONS = True# 设置每次请求结束后会自动提交数据库中的改动SQLALCHEMY_COMMIT_ON_TEARDOWN = True# 查询时会显示原始SQL语句SQLALCHEMY_ECHO = Trueapp.config.from_object(Config)
db = SQLAlchemy(app)

2.常用的SQLAlchemy字段类型

3.常用的SQLAlchemy列选项

4.常用的SQLAlchemy关系选项

5.在视图函数中定义模型类

注意:需要在命令行操作

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)class Config(object):"""配置参数"""# sqlalchemy的配置参数SQLALCHEMY_DATABASE_URI = "mysql://root:root@127.0.0.1:3306/flask_demo"# 设置sqlalchemy自动更跟踪数据库SQLALCHEMY_TRACK_MODIFICATIONS = True# 设置每次请求结束后会自动提交数据库中的改动SQLALCHEMY_COMMIT_ON_TEARDOWN = True# 查询时会显示原始SQL语句SQLALCHEMY_ECHO = Trueapp.config.from_object(Config)
db = SQLAlchemy(app)# 定义数据库的模型
class Author(db.Model):"""作者"""__tablename__ = "author"id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(32), unique=True)books = db.relationship("Book", backref="author")class Book(db.Model):"""书籍"""__tablename__ = "book"id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(64), unique=True)author_id = db.Column(db.Integer, db.ForeignKey("author.id"))if __name__ == '__main__':db.drop_all() #第一次执行的时候操作db.create_all()#创建表# app.run(debug=True)

6.数据库的增删改查

1 常用的SQLAlchemy查询过滤器

2.常用的SQLAlchemy查询执行器

3 插入一条或者多条数据

def add_one():"""添加单个数据"""user1 = Author(name="fly1")db.session.add(user1)db.session.commit()bk_user1 = Book(name='fly自传', author_id=user1.id)db.session.add(bk_user1)db.session.commit()def add_many():"""添加多个数据"""au_xi = Author(name='我吃西红柿')au_qian = Author(name='萧潜')au_san = Author(name='唐家三少')db.session.add_all([au_xi, au_qian, au_san])db.session.commit()bk_xi = Book(name='吞噬星空', author_id=au_xi.id)bk_xi2 = Book(name='寸芒', author_id=au_qian.id)bk_qian = Book(name='飘渺之旅', author_id=au_qian.id)bk_san = Book(name='冰火魔厨', author_id=au_san.id)db.session.add_all([bk_xi, bk_xi2, bk_qian, bk_san])db.session.commit()

4.删除数据

def delete():"""删除数据"""author = Author.query.filter_by(name="唐家三少").first()db.session.delete(author)db.session.commit()

5.修改数据

def update():"""更新数据"""book = Book.query.filter_by(name="吞噬星空").first()book.name = '吞噬星空2'db.session.commit()Author.query.filter_by(name='zhang').update({'name': 'li'})pass

6.查询数据

def query():"""查询数据"""# r1 = Book.query.all() #查询所有# r2 = Book.query.filter_by(name="吞噬星空").all() #根据条件查询r3 = Book.query.filter_by(name="吞噬星空").first()  # 根据条件查询 第一个# r4 = Book.query.first() #查询第一个# r5 = Book.query.filter(Author.name.endswith('g')).all() #模糊查询print(r3)print(type(r3))

7.数据库迁移

在开发过程中,需要修改数据库模型,这样就可以使用Flask-Migrate来进行数据的迁移。

1 安装Flask-Migrate和flask_script

pip install flask-migrate

pip install flask_script

2 添加迁移代码

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate,MigrateCommand
from flask_script import Shell,Managerapp = Flask(__name__)manager = Manager(app)class Config(object):"""配置参数"""# sqlalchemy的配置参数SQLALCHEMY_DATABASE_URI = "mysql://root:root@127.0.0.1:3306/flask_demo"# 设置sqlalchemy自动更跟踪数据库SQLALCHEMY_TRACK_MODIFICATIONS = True# 设置每次请求结束后会自动提交数据库中的改动SQLALCHEMY_COMMIT_ON_TEARDOWN = True# 查询时会显示原始SQL语句SQLALCHEMY_ECHO = Trueapp.config.from_object(Config)
db = SQLAlchemy(app)#第一个参数是Flask的实例,第二个参数是Sqlalchemy数据库实例
migrate = Migrate(app,db)#manager是Flask-Script的实例,这条语句在flask-Script中添加一个db命令
manager.add_command('db',MigrateCommand)# 定义数据库的模型
class Author(db.Model):"""作者"""__tablename__ = "author"id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(32), unique=True)books = db.relationship("Book", backref="author")class Book(db.Model):"""书籍"""__tablename__ = "book"id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(64), unique=True)author_id = db.Column(db.Integer, db.ForeignKey("author.id"))if __name__ == '__main__':manager.run()

3 创建迁移仓库

python app.py db init

4 创建迁移脚本

python app.py db migrate -m ‘initial migration’

5 更新数据库

python app.py db upgrade

6 回退数据库

python database.py db downgrade 版本号


结束!!!

Flask开发之数据库(SQLAlchemy)的配置以及增删改查相关推荐

  1. SQLite 数据库安装、创建、增删改查(一)

    目录 一.学习资料 二.下载软件 1.SQLite 2.SQLiteStudio 3.Navicat 15 for SQLite 4.System.Data.SQLite.dll 三.创建数据库 1. ...

  2. 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查

    基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 转载于:https://github.com/Meowv/Blog 本篇说一下自定义仓储的实现方式,其实在ab ...

  3. C++数据库编程 MySQL Connecttor C++增删改查

    C++数据库编程简介 C++数据库编程 ODBC简介 C++数据库编程 ODBC连接SQL Server数据库 C++数据库编程 ODBC插入数据 C++数据库编程 ODBC查询数据 C++数据库编程 ...

  4. MySQL数据库基本操作详解(数据库概述、基本操作、增删改查等)

    目录 MySQL数据库概述 MySQL数据库的基本操作 MySQL数据库的表的操作 MySQL数据库的增删查改(CRUD) MySQL数据库概述: 初来乍到,什么是数据库?数据库就是存储数据的仓库,我 ...

  5. sqlalchemy 对 mysql 进行增删改查

    我其实还是喜欢原生的 sql 语句,sqlalchemy是对pymysql的封装,用的时候经常出各种错误.但是orm操作较简单,可以实现外键的关联操作. 视频 https://www.bilibili ...

  6. SQLAlchemy的使用---M2M增删改查

    SQLAlchemy的使用---M2M增删改查 from sqlalchemy.orm import sessionmaker from sqlalchemy_M2M import engine, G ...

  7. Unity 2021连接外网数据库,建表,增删改查遇到的问题记录

    目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...

  8. MySQL数据库安装以及SQL基本增删改查

    目录 1.介绍下数据库 1.1.DB概念和特点 1.2.常见DB软件 1.3.数据库结构 2.MySQL安装与使用 2.1.安装 2.2.卸载 2.3.MySQL服务启动与关闭 2.4.MySQL登录 ...

  9. Bootstrap4+MySQL前后端综合实训-Day05-AM【MySQL数据库(SQLyog软件基本操作、架构设计器)、eclipse(JDBC开发-添加驱动、构建路径、增删改查基本测试)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 MySQL数据库--建库.建表 新建连接.测试连接 新建news_manager数据库 ...

最新文章

  1. Python图片爬取方法总结
  2. 2017-2018-1 20155222 《信息安全系统设计基础》第8周学习总结
  3. 【收藏】goland报错:报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of
  4. 在网页中的flash游戏,按方向键浏览器的滚动条会跟着滚动
  5. vscode 新建python 终端
  6. 大一C语言和线性代数,有谁学过线性代数和C语言啊?
  7. DataGrid添加CheckBox(下拉列表)
  8. Web应用程序中Resource Bundle技术概述
  9. 宝塔控制面板如何添加伪静态
  10. python-Excel操作(xlrd读,xlwt写)
  11. 国内十大白银期货APP最新排名
  12. Scratch快速入门(一)
  13. Windows10 深度美化
  14. 夜游灯光表演如何更好的丰富游客体验
  15. 135编辑器嵌入html,135编辑器教程|三步教你搞定表格样式
  16. 【MySQL】insert into 和select 搭配使用进行表间复制
  17. 加州欧文计算机工程专业,加州大学欧文分校计算机工程博士专业排名
  18. 开脑洞:数字文明的等级
  19. Excel 利用histogram统计数据频数
  20. Javascript 16进制转有符号的10进制整数

热门文章

  1. 【CSS-03】radio+img居中对齐
  2. 蚂蚁金服nlp大赛经验分享
  3. Leetcode周赛295记录
  4. AX2012服务器配置--Windows Server 2012 如何实现多个用户远程桌面登陆?
  5. python去掉人像白边_使用matplotlib而不保存imag时删除图像周围的白色边框
  6. 实现数字到Excel中列序号的转换
  7. 群晖 nas 升级内存 手记(DS218+)
  8. 使用POI将数据库导出为excel表格
  9. 多媒体播放器-VLC media player提供下载
  10. python制作微信个人二维码_Python制作微信机器人,随时陪你聊天