【测试平台开发】——05Flask后端api开发实战(二)—— SqlAlchemy
SqlAlchemy
一、SqlAlchemy例子
安装:
pip install flask-SQLAlchemy
SqlAlchemy官方地址:https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/
配置数据库参考地址:https://docs.sqlalchemy.org/en/14/core/engines.html
from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__)
# 配置数据库详细信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://scott:tiger@localhost/foo'
# 初始化一个db
db = SQLAlchemy(app) # 使用db. 可以让类映射到数据库中的表
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self):
return '<User %r>' % self.username
解析配置数据库详细信息:mysql+pymysql://scott:tiger@localhost/foo
【mysql】:使用的mysql数据库 【pymysql】:使用pymysql的引擎 【://scott】:数据库用户名 【:tiger】:数据库密码 【@localhost】:数据库地址 【/foo】:数据库的库名称
二、创建数据库
1、新建数据库

字符集选择utf8mb4,排序规则可不选自动生成如图。
2、创建用户

填写用户信息并保存

3、设置用户权限

选择新创建的数据库,并配置所有权限

三、数据库互联
官网:https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/
1、创建表和删除表
因为用的pymysql引擎,所以需要先进行安装:
pip install pymysql
执行代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__)
# 配置数据库详细信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1234567@localhost:8881/2022.8.3Data'
# 初始化一个db
db = SQLAlchemy(app) # 使用db. 可以让类映射到数据库中的表
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self):
return '<User %r>' % self.username if __name__ == '__main__':
# 强制删除表
db.drop_all()
# 创建表的方法
db.create_all()
2、表中插入数据
data = User(id='1', username='测试1', email='123@qq.com', email2='569@qq.com')
sessionData = db.session
sessionData.add(data)
sessionData.commit()
完整代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__)
# 配置数据库详细信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1234567@localhost:8881/2022.8.3Data'
# 初始化一个db
db = SQLAlchemy(app) # 使用db. 可以让类映射到数据库中的表
class User(db.Model):
# 以下字段代码数据库中的表头
# db.Integer是整型,primary_key代表主键,唯一标识是数据库的身份证
id = db.Column(db.Integer, primary_key=True)
# db.String(80),代表80个字符的字符串,unique代表不是唯一,nullable=False,代表必填项
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
email2 = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self):
return '<User %r>' % self.username class Task(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False) if __name__ == '__main__':
# 强制删表
db.drop_all()
# 创建表的方法
db.create_all() # 在远程数据库中创建表
# 实例化User表
data = User(id='1', username='测试1', email='123@qq.com', email2='569@qq.com')
sessionData = db.session
sessionData.add(data)
sessionData.commit()

批量插入数据库数据:
# 在远程数据库表中创建数据
# 实例化User表
for i in range(1, 21):
data = User(username=f'测试{i}', email=f'123{i}@qq.com', email2=f'456{i}@qq.com') sessionData = db.session
# 把类添加到sqlalchemy中
sessionData.add(data)
# 把操作提交
sessionData.commit()

3、查询数据
User.query.filter_by(username='XXX').first() User.query.all()
完整代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__)
# 配置数据库详细信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1234567@localhost:8881/2022.8.3Data'
# 初始化一个db
db = SQLAlchemy(app) # 使用db. 可以让类映射到数据库中的表
class User(db.Model):
# 以下字段代码数据库中的表头
# db.Integer是整型,primary_key代表主键,唯一标识是数据库的身份证
id = db.Column(db.Integer, primary_key=True)
# db.String(80),代表80个字符的字符串,unique=Ture代表不是唯一,nullable=False,代表必填项
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
email2 = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self):
# return '<User %r %r>' % (self.username,self.email)
# return '<User {} {}>'.format(self.username,self.email)
return f'<User {self.username} {self.email}>' class Task(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False) if __name__ == '__main__':
# 强制删表
db.drop_all()
# 创建表的方法
db.create_all() # 在远程数据库表中创建数据
# 实例化User表
for i in range(1, 21):
data = User(username=f'测试{i}', email=f'123{i}@qq.com', email2=f'456{i}@qq.com') sessionData = db.session
# 把类添加到sqlalchemy中
sessionData.add(data)
# 把操作提交
sessionData.commit() # 查询数据
# 在表中查询数据,使用User.query
# first获取第一个结果
result = User.query.filter_by(username='测试1').first()
# 查询所有数据
result = User.query.all()
print(result)

查询一组元素中的指定元素:
result = User.query.all()
result = [i for i in result if '9' in i.username]
print(result)

4、更新数据
# 更新数据
# 筛查要修改的数据,然后对表数据进行修改,最后再提交
data = User.query.filter_by(username='测试11').first()
data.email = 'AAAAA@qq.com'
db.session.commit()

5、删除数据
# 删除数据
data = User.query.filter_by(username='测试20').first()
session = db.session
session.delete(data)
session.commit()

四、自动化平台系列文章汇总
【测试平台开发】——05Flask后端api开发实战(二)—— SqlAlchemy的更多相关文章
- 从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目
原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
- teprunner测试平台用例前置模块开发
本文开发内容 现在正式进入测试相关功能开发.teprunner测试平台底层是pytest,中间层是tep,还没了解的朋友可以先看看tep的文章,整个平台的设计思路和后面用例的执行都会基于这个工具.te ...
- 高效的后端API开发模板-illuminant
概要 整体介绍 补充说明 Q. 有了 prisma 自动生成的 graphql 接口, 为什么还要 rest 接口和 websocket 接口? Q. 为什么要通过 illuminant 加一层反向代 ...
- django 开发之前后端分离开发模式
1. 什么是前后端分离开发的概念: 前端页面运行前端服务器上,负责页面的渲染(静态文件的加载)与跳转 后端代码运行在后端服务器上, 负责数据的处理(提供数据请求的接口) 2. 前后端分离开发碰到的问题 ...
- AutoCAD二次开发——AutoCAD.NET API开发环境搭建
AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...
- spring boot + vue + element-ui全栈开发入门——前后端整合开发
一.配置 思路是通过node的跨域配置来调用spring boot的rest api. 修改config\index.js文件,设置跨域配置proxyTable: proxyTable: { '/ap ...
- java开发-前后端分离
众所周知,做java开发是后端的开发,我们时常与前端打交道,但更加注重后端代码的实现,前台的页面都是由前端开发人员做的,那么,是怎么做到前后端分离的呢? 首先,是后端的开发, 在mapper层:Stu ...
- Google maps API开发
原文:Google maps API开发 Google maps API开发(一) 最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧 一.加载Googl ...
- java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明
文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...
- [转] 前后端分离开发模式的 mock 平台预研
引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都 ...
随机推荐
- 多个子节点收集日志-主节点上传到HDFS
Master: ---------------------- #MasterAgentMasterAgent.channels = c1MasterAgent.sources = s1MasterAg ...
- java开发webservice报Service(URL, QName, WebServiceFeature[]) is undefined错误的解决方法
Description Resource Path Location TypeThe constructor Service(URL, QName, WebServiceFeature[]) is u ...
- HIVE从入门到精通------(1)hive的基本操作
1.开启hive 1.首先在master的/usr/local/soft/下启动hadoop: master : start-all.sh start-all.sh 2.在另一个master(2)上监 ...
- 类、事件与对象---Dad&Mom简单练习
目的: 模拟一个家庭日常发生的场景:妈妈做好饭,说:"开饭了!",这是爸爸听到了妈妈的喊话就立马动身开始饭吃.而儿子此时正在打游戏,于是他就说:"等我打完这把游戏再吃!& ...
- CM3调试系统简析
CM3 调试系统简析 **"一直以来,单片机的调试一直不是很突出的主题,很多简单些的程序在开发中,甚至都没有调试的概念,而只是把生成的映像直接烧入片子,再根据错误症状来判断问题,然后修改程序 ...
- 网易数帆开源贡献获业界肯定,轻舟API网关获OSCAR尖峰开源技术创新奖
2020年10月16日,由中国信息通信研究院主办的"2020开源产业大会"在北京线下与线上同步召开,主办方在会上公布了"OSCAR尖峰开源奖项"各个奖项的评选结 ...
- webgl智慧楼宇发光系列之线性采样下高斯模糊
目录 webgl智慧楼宇发光系列之线性采样下高斯模糊 效率问题 线性采样 代码讲解 总结 参考文档 webgl智慧楼宇发光系列之线性采样下高斯模糊 前面一篇文章 <webgl智慧楼宇发光效果算法 ...
- var 和 let 在 jQuery中的区别
下面通过代码案例来进一步解释 var 和 let 在 jQuery link 函数中的区别: (function ($) { $.fn.link = function () { // Example ...
- oeasy教您玩转vim - 19 - 使用标记
使用标记 回忆上节课内容 跳转到行号 200G 设置行号选项 显示行号 :se nu 显示相对行号 :se rnu 如何用命令行跳转 :100 但是我如何有的时候记不住到底跳到多少行 能否做个标记留个 ...
- STL 算法 <algorithm>,
STL 算法部分主要由头文件 <algorithm>,<numeric>,<functional > 组成.要使用 STL 中的算法函数必须包含头文件 < a ...