【测试平台开发】——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)来编程 前后端都 ...
随机推荐
- Ubuntu20.04之Nvidia驱动安装
参考:https://blog.csdn.net/xiaokedou_hust/article/details/82187860,实际操作时和该博文有些出入,故作优化. s1.连接wifi,打开终端. ...
- python3 安装pyodbc失败 pip3 install pyodbc
python3 安装pyodbc失败 报错1: 关键报错信息: fatal error: sql.h: No such file or directory [root@centfos python3 ...
- 虽然说自己是个废物,但年纪轻轻就有了120w
- Ubuntu下的LabVIEW开发
1 虚拟机的安装 我用的是Virtua Box 的虚拟机,当然也有其他的类似软件:下载虚拟机的网址: https://www.virtualbox.org/wiki/Downloads 自行去下载合适 ...
- IstioCon 回顾 | 网易数帆的 Istio 推送性能优化经验
在 IstioCon2022 上,网易数帆资深架构师方志恒从企业生产落地实践的视角分享了多年 Istio 实践经验,介绍了 Istio 数据模型,xDS 和 Istio 推送的关系,网易数帆遇到的性能 ...
- Git 清除缓存账密
[已解决] git push 报错:git: 'credential-manager' is not a git command. See 'git --help'. 解决方案1)运行 git con ...
- 微信小程序热门选题
一.大体实现思路 微信小程序,现在是非常热门的,基于微信生态开发的.现在很多计算机毕业的同学,都会选择微信小程序作为毕业设计 小程序端通常都是展示数据给用户去看的,大多数情况下,这些数据不是写死的,而 ...
- oeasy教您玩转vim - 26 - 缩进设置
缩进设置 回忆上节课内容 这次了解了颜色的细节 设置 256 色模式 :set t_Co=256 然后确定了具体的各种颜色 还可以生成网页 :TOhtml 还有什么好玩的么? 缩进设置 在 ...
- oeasy教您玩转vim - 31 - # 文字区块
文字区块 回忆上节课内容 上上次讲的翻页 上次先让屏幕位置固定,移动光标 H- Head 移动到屏幕的顶端 M- Middle 移动到屏幕的中间 L- Low 移动到屏幕的底部 然后让光标固定,移 ...
- oeasy教您玩转python - 003 - # - 继续运行
继续运行 回忆上次内容 在解释器里玩耍 print("Hello World") 1+1 编写了 py 文件 运行了 py 文件 这次我们继续丰富这个文件 分析 py 文件 我 ...