flask 数据库操作入门

安装数据库

mysql8.0 下载后一直点击下一步,设置好root密码

安装模块

pip install flask_sqlalchemy

连接数据库

还需要自己创建一个数据库可以使用navicat图形化创建也可以使用命令创建。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text# 设置一个对象名为app, 用于传输一些数据库连接的一些配置信息。
# 在app.config 中设置数据库连接的信息
app = Flask(__name__)# 连接数据库的一些配置
# 连接数据库的地址
HOSTNAME = "127.0.0.1"
# 连接数据库的端口
PORT = 3306
# 连接数据库的账号名
USERNAME = "root"
# 连接数据库的密码,这里用自己的密码,我这里用root
PASSWORD = "root"
# 设置连接数据库的数据库名
DATABASE = "database_learn"# 默认连接mysql数据库的语句 使用SQLALCHEMY
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"# 设置一个数据库对象, 使用SQLAlchemy会创建一个db对象,然后sqlalchemy会自动读取app.config 中的连接信息。
db = SQLAlchemy(app)# flask上下文问题,不然会报错
# ctrl + / 多行注释和多行取消注释
with app.app_context():with db.engine.connect() as conn:rs = conn.execute(text("select 1"))print(rs.fetchone())# 测试数据库连接代码,只是测试连接代码# 如果正常输出(1,) sql语句正常执行,数据库连接没有问题

数据库增删改查

增加数据库

@app.route("/user/add")
def add_user():# 创建ORM对象user = User(username="菜鸡学安全", password="111111")user1 = User(username="张三", password="444444")user2 = User(username="李四", password="555555")user3 = User(username="王五", password="666666")# db.session进行操作db.session.add(user4)db.session.add(user1)db.session.add(user2)db.session.add(user3)# 同步到数据库中db.session.commit()return "用户已添加成功"

查询数据库

@app.route("/user/query")
def query_user():# 1, get查找:根据主键查找# user = User.query.get(1)# print(f"{user.id}:{user.username}---{user.password}")# return "数据查找成功!"#2, filter_by查找users = User.query.filter_by(username="菜鸡学安全")# 类似于数组的操作,query对象print(type(users))for user in users:print(user.username)print(user.password)return "数据查找成功!"

get查询

filter查询

修改数据

# 修改数据
@app.route("/user/updata")
def updata_user():user = User.query.filter_by(username="菜鸡学安全").first()user.password = "222222"db.session.commit()return "数据修改成功!"


修改数据成功

删除数据

@app.route("/user/delete")
def delete_user():# 1. 查找user = User.query.get(3)# 2, 从db.session中删除db.session.delete(user)# 3, 同步到数据库中db.session.commit()return "数据删除成功!"


删除数据成功

完整代码

app.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text# 设置一个对象名为app, 用于传输一些数据库连接的一些配置信息。
# 在app.config 中设置数据库连接的信息
app = Flask(__name__)# 连接数据库的一些配置
# 连接数据库的地址
HOSTNAME = "127.0.0.1"
# 连接数据库的端口
PORT = 3306
# 连接数据库的账号名
USERNAME = "root"
# 连接数据库的密码,这里用自己的密码,我这里用root
PASSWORD = "root"
# 设置连接数据库的数据库名
DATABASE = "database_learn"# 默认连接mysql数据库的语句 使用SQLALCHEMY
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"# 设置一个数据库对象, 使用SQLAlchemy会创建一个db对象,然后sqlalchemy会自动读取app.config 中的连接信息。
db = SQLAlchemy(app)# flask上下文问题,不然会报错
# ctrl + / 多行注释和多行取消注释
# with app.app_context():
#     with db.engine.connect() as conn:
#         rs = conn.execute(text("select 1"))
#         print(rs.fetchone())# 测试数据库连接代码,只是测试连接代码# 如果正常输出(1,) sql语句正常执行,数据库连接没有问题# 对象关系映射(object: relationship mapping),是用面向对象的方式来操作数据,大大提高开发效率。
# 提高安全性,底层代码对sql注入做了一些防护。 灵魂性强,支持所有关系型数据库。
# 一个ORM模型对应一张表,一个属性对应的是这张表的一个字段。class User(db.Model):__tablename__ = "user"# 表中的一个字段的定义id = db.Column(db.Integer, primary_key=True, autoincrement=True)username = db.Column(db.String(100), nullable=False)password = db.Column(db.String(100), nullable=False)# user = User(username="菜鸡学安全", password="111111")
# sql: insert user(username,password) values('菜鸡学安全', '111111');# 同步至数据库
with app.app_context():db.create_all()@app.route('/')
def hello_world():  # put application's code herereturn 'Hello World!'# 增加数据
@app.route("/user/add")
def add_user():# 创建ORM对象user = User(username="菜鸡学安全", password="111111")user1 = User(username="张三", password="444444")user2 = User(username="李四", password="555555")user3 = User(username="王五", password="666666")# db.session进行操作db.session.add(user4)db.session.add(user1)db.session.add(user2)db.session.add(user3)# 同步到数据库中db.session.commit()return "用户已添加成功"# 查询
@app.route("/user/query")
def query_user():# 1, get查找:根据主键查找# user = User.query.get(1)# print(f"{user.id}:{user.username}---{user.password}")# return "数据查找成功!"#2, filter_by查找users = User.query.filter_by(username="菜鸡学安全")# 类似于数组的操作,query对象print(type(users))for user in users:print(user.username)print(user.password)return "数据查找成功!"# 修改数据
@app.route("/user/updata")
def updata_user():user = User.query.filter_by(username="菜鸡学安全").first()user.password = "222222"db.session.commit()return "数据修改成功!"# 删除数据
@app.route("/user/delete")
def delete_user():# 1. 查找user = User.query.get(3)# 2, 从db.session中删除db.session.delete(user)# 3, 同步到数据库中db.session.commit()return "数据删除成功!"if __name__ == '__main__':app.run()

参考链接

https://www.bilibili.com/video/BV17r4y1y7jJ/

flask 数据库操作入门教程(一把梭)相关推荐

  1. 前端 IndexDB 操作入门教程

    前端 IndexDB 操作入门教程 idb-js 基于indexdb本地数据库的封装 文档地址 安装: npm install idb-js --save 使用: 第一步: 引入Idb import ...

  2. C语言与数据库操作入门

    https://blog.csdn.net/flyingqd/article/details/78763652 C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1 ...

  3. Mysql数据库基础入门教程

    Mysql数据库基础入门教程 课程链接:https://www.bilibili.com/video/BV1Qb411x7Yc?p=1 2022/1/22start 一.数据库简介 1.什么是数据库? ...

  4. 数据库快速入门教程--视频

    数据库快速入门教程--视频 下载地址:http://v.51work6.com/courseInfoRedirect.do?action=courseInfo&courseId=240579 ...

  5. cad怎么向下位移,CAD基础操作入门教程,CAD怎么按坐标位移来移动对象的方法

    CAD基础操作入门教程,CAD怎么按坐标位移来移动对象的方法 CAD绘图操作无疑是比较考验软件操作熟练以及创意设计思维的过程,作为cad设计师,软件熟练是基础也是根本,而创意思维是升华,关系着你的后期 ...

  6. C语言与数据库操作入门(Win版)

    数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的,既使你不会Windows API,只要参照本文的方法,写数据库应用程序,你也行.本文以MySq ...

  7. MySQL数据库新手入门教程

    相信很多做数据分析的朋友都发现,在平时做业务分析中,Excel表格是我们使用最频繁的工具.我们还发现,Excel虽然好用,但一旦数据量大了起来,比如处理二三十万条或以上数据量的时候,就会出现卡顿,甚至 ...

  8. android dbflow教程,Android高性能ORM数据库DBFlow入门教程

    一.引入依赖.初始化 需要引入apt和maven,配置项目的 build.gradle buildscript { repositories { jcenter() } dependencies { ...

  9. Android Room 数据库最佳入门教程

    引言 本文章旨在记录学习Android JetPack库下的Room数据库的使用,不作过于深入原理的讲解,如有问题和建议请留言讨论. 1.Room 库概念及架构示意图 概念 Google的介绍:    ...

最新文章

  1. perl开发环境配置(Database,SOCKET,CISCO)j(ReShip)
  2. Andorid中的HAL
  3. python【蓝桥杯vip练习题库】ALGO-86矩阵乘法(枚举)
  4. SQL Server 审核(Audit)-- 创建服务器级别的审核
  5. html自动轮播中间放大,html5+css如何实现中间大两头小的轮播效果
  6. 小白的markdown基础语法总结
  7. 【Python②】python之首秀
  8. tcp拥塞控制_网络TCP的拥塞控制算法简介
  9. tar打包时排除一些文件或者目录
  10. 发送附件时,防止文件名中的中文字符变成乱码
  11. win10+Vmware+centeros10连接xshell和xftp
  12. [Qt]用QItemDelegate的来修改QStandardItem字体颜色
  13. java整理软件--- Java OCR 图像智能字符识别技术,可识别中文,但是验证码不可以识别...已测识别中文效果很好
  14. Microsoft MVC Preview 2 ActionFilterAttribute实际开发中的应用
  15. Open3d之点云顶点法线估计
  16. python itemgetter_Python operator.itemgetter
  17. LeetCode解题思路—循环排序与原地翻转链表(思维导图)
  18. 互联网未来十年发展趋势
  19. 企业微信最全17种获客+4种自动转化玩法
  20. spring boot启动报错: The APR based Apache Tomcat Native library which allows optimal performance

热门文章

  1. MCS-51仿真调试 定时器计数器
  2. Kinsoku jikou desu新浪股票接口变动(python)
  3. linux添加硬盘30g,linux添加新硬盘 - 橙子柠檬's Blog
  4. 完善细节,使你的网站清新脱俗!
  5. 绝地求生:大逃杀(dfs)
  6. Android Window类解析
  7. vim配置入门,到豪华版vim配置
  8. Tak and Cards(DP,二维背包)
  9. 名编辑电子杂志大师教程 | 电子杂志打印功能
  10. React中微信H5支付实现代码