当前位置: 首页 > news >正文

测试文件和数据库文件

接口测试

 flaks项目入口文件manage.py路由配置

import requests#首先面向对象作封装,避免相同代码反复编写
class HttpApiTest:def test_get(self,url,data={}): 
#用来测试get方法的接口
#self通过共享self类中间的变量
#url用来请求接口
#data可传可不传res =requests.get(url,params=data)#params请求的参数return res.text#将结果属性text返回#执行的操作一定要写道main入口里,声明写在外头
if __name__=="__main__":httpapi = HttpApiTest()res = httpapi.test_get("http://127.0.0.1:5000",data={"id":"123"})print(res)

通过访问接口并且传递id参数测试接口是否正常工作

from flask import request@app.route('/',methods=['GET'])
def index():#首页res = {"msg":"hello"} #字典return jsonify(res) #字典序列化为json数据类型#通过url接收请求参数id=request.args.get("id",None)print("请求的参数id是{}".format(id))

项目入口文件通过request.args.get查找客户端传递过来的名为”id“的参数,如果未查询到该参数,则默认返回None,如果查询到则返回键值对的参数,例如id:123

test.py文件相当于客户端,客户端发送请求到manage.py定义的接口,确认接口是否正常工作,主要是测试以下内容

  1. 可访问性:确认客户端能否成功访问接口(如 manage.py 定义的路由),检查服务器是否正常运行。

  2. 参数传递:验证客户端是否能够通过接口传递参数,确保这些参数能够被正确接收和处理。

  3. 响应正确性:检查接口返回的响应是否符合预期,包括状态码、响应体内容和格式等。

  4. 边界情况:测试接口在不同输入(如有效、无效或缺失的参数)情况下的表现,确保其稳定性和错误处理能力。

  5. 性能:在一定负载下测试接口的响应时间和处理能力,确保其在高并发情况下依然正常工作。

接口是否正常工作有两个检验方法:

1.运行test.py测试脚本,会输出项目入口文件manage.py中路由配置直接编写的信息
项目入口文件路由配置:

测试文件运行输出:


可以看到,运行测试脚本文件之后输出的信息是项目入口文件路由配置中直接书写的信息


 

2.保存manage.py项目入口文件的更改,启动flask应用的命令行会自动打印输出测试脚本传递过来的参数

可以看到启动项目的命令行中已经输出了测试文件中传递过来的参数,但是可能因为Flask 默认的日志处理机制覆盖了标准输出,所以能看到id=123而不是”请求的id参数是123“这样子了

总之,路由处理函数中既可以发送数据到客户端,也可以接收客户端传来的请求参数。这种方式使得 Flask 应用能够与客户端进行交互。

一.新建数据库,要能存储图片表情之类的数据

要想连接mysql,点击”+“,创建数据源

配置MySQ连接信息并下载需驱动
设置用户为root,密码自己设置

二.数据库配置----数据库文件+入口文件注入数据库文件进行配置

数据库文件database.py,所有数据库相关的链接,配置,实例,都写到数据库文件中

from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
db=SQLAlchemy()
#db使用方法
#在入口文件注入操作#导入数据库实例
from database import db#配置mysql数据库
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://root:password@localhost:3306/social'
#等号前:数据库链接
#等号后:数据库类型,用户名,密码,路径(链接地址),端口号(默认3306),具体数据库名称#自动提交sql请求
app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"]=True#初始化操作
db.init_app(app)
#以上都是在flask实例对象中配置的关于mysql数据库的信息,db 是一个 SQLAlchemy 的实例,调用 init_app(app) 方法后,db 会获取 Flask 应用的配置信息。完成初始化之后就可以在应用中使用db对象来进行数据库的操作。

 

  • SQLAlchemy 是一个在python中使用的ORM工具,允许开发者以对象的方式定义和操作数据库模型 ,虽然最终执行的操作是基于 SQL 语句的,但开发者主要与 Python 对象交互。
  • ORM(对象关系映射):SQLAlchemy 将数据库表映射为 Python 类,将表的行映射为类的实例。通过操作这些对象,开发者可以进行增、删、改、查等操作,而不需要直接写 SQL 语句。

  • 当你使用 SQLAlchemy 进行操作时,SQLAlchemy 会根据你的对象操作生成相应的 SQL 语句。

  • pymysql 作为驱动,负责将 SQLAlchemy 生成的 SQL 语句发送到 MySQL 数据库,并处理数据库返回的结果。

    SQLAlchemy 提供 ORM 功能和接口,pymysql 处理实际的数据库通信,而 MySQL 则是存储和管理数据的数据库系统

 

  • 在MySQL数据库可视化工具中新建一个空白数据库
  • 在python中使用SQLAlchemy定义类,这些类能映射到想要在数据库中创建的表(一个类对应一个表)
  • 一个类中的多个实例对应一个表中多行数据

原本还疑惑怎么这么麻烦呢? 要创建SQLAlchemy实例对象db,接着在入口文件中用flask实例对象app对数据库连接信息进行配置,还有sql自动提交进行配置,导入db,db调用配置好的app实例,然后db就能对数据库进行操作。


为啥不直接sqlalchemy实例对象db直接进行数据库信息的配置,在入口文件导入db,同样db就对数据库进行操作了。


这就是规矩!!!flask实例对象用于配置数据库连接信息,sqlalchemy实例对象通过flask应用的配置来获取这些信息,sqlalchemy实例对象db调用flask实例对象进行初始化,这样db就能访问flask应用的配置了

  3306端口号是在datagrip数据库可视化工具中点击“+”创建数据源,连接MySQL数据库,然后进行MySQL信息配置中设置的。配置mysql数据库时,通过端口号访问到MySQL数据库管理系统,然后再通过具体数据库名称social对具体数据库进行数据操纵

flask实例对象功能

  1. 路由管理:定义应用的 URL 路由和处理请求的视图函数。

  2. 中间件:添加请求和响应的处理逻辑,例如日志记录、认证等。

  3. 蓝图:组织大型应用的模块化结构,便于管理和扩展。

  4. 配置管理:设置其他应用配置(如调试模式、静态文件目录等)。

  5. 扩展管理:集成各种 Flask 扩展,添加功能模块,如用户认证、表单处理等。

这些功能使得 Flask 成为一个灵活且强大的 web 框架。

在social数据库中创建表(详见mysql图形化界面-datagrip) 

三.数据库中创建表

点击”+“创建每列的值,完之后点击箭头提交,表就建好了

用来测试接口数据库能不能连上

四.入口文件路由配置中查询数据库:

  #查询数据库userlist = db.session.execute("select * from user").fetchall()#session sql语句,execute执行,fetchall获取所有。查询所有用户print(userlist)

浏览器访问​​​​​​​127.0.0.1:5000  触发查询操作

正常应该返回数据库里边信息,例如[(1,'123@123.net','123'),(2,'456@456.net','456')]

哈哈哈,不正常就该像我这样。不干了,干饭!

相关文章:

测试文件和数据库文件

接口测试 flaks项目入口文件manage.py路由配置 import requests#首先面向对象作封装,避免相同代码反复编写 class HttpApiTest:def test_get(self,url,data{}): #用来测试get方法的接口 #self通过共享self类中间的变量 #url用来请求接口 #data可传可不传res reques…...

redis集群模式连接

目录 一:背景 二:实现过程 三:总结 一:背景 redis集群通过将数据分散存储在多个主节点上,每个主节点可以有多个从节点进行数据的复制,以此来实现数据的高可用性和负载均衡。在集群模式下,客户…...

Linux高级I/O:多路转接模型

目录 一.常见的IO模型介绍二.多路转接I/O1.select1.1.函数解析1.2. select特点和缺点1.3.基于 select 的多客户端网络服务器 2.poll2.1.poll函数解析2.2.poll特点和缺点2.3.基于poll的tcp服务器 3.epoll3.1.系列函数解析3.2.epoll原理解析2.3.基于 select 的多客户端网络服务器…...

MongoDB Limit 与 Skip 方法

MongoDB Limit 与 Skip 方法 MongoDB 是一个流行的 NoSQL 数据库,它提供了灵活的数据存储和强大的查询功能。在处理大量数据时,我们常常需要限制返回的结果数量或者跳过一部分结果,这时就可以使用 MongoDB 的 limit 和 skip 方法。 Limit 方…...

【2025】中医药健康管理小程序(安卓原生开发+用户+管理员)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

VulnHub-Bilu_b0x靶机笔记

Bilu_b0x 靶机 概述 Vulnhub 的一个靶机,包含了 sql 注入,文件包含,代码审计,内核提权。整体也是比较简单的内容,和大家一起学习 Billu_b0x.zip 靶机地址: https://pan.baidu.com/s/1VWazR7tpm2xJZIGUS…...

Python | Leetcode Python题解之第421题数组中两个数的最大异或值

题目: 题解: class Trie:def __init__(self):# 左子树指向表示 0 的子节点self.left None# 右子树指向表示 1 的子节点self.right Noneclass Solution:def findMaximumXOR(self, nums: List[int]) -> int:# 字典树的根节点root Trie()# 最高位的二…...

如何将普通Tokenizer变成Fast Tokenizer

现在的huggingface库里面Tokenizer有两种,一种就是普通的,另一种是fast的。fast和普通的区别就是fast使用rust语言编写,在处理大量文本的时候会更快。我自己测试的时候单一一句的话fast要比普通的慢一些,当量叠上来,到…...

联合复现!考虑最优弃能率的风光火储联合系统分层优化经济调度!

前言 目前,尽管不断地追逐可再生能源全额消纳方式,大幅减小弃风弃光电量,但是若考虑风电、光伏发电的随机属性,全额消纳可能造成电网峰谷差、调峰难度及调峰调频等辅助服务费用的剧增,引起电网潜在运行风险。因此&…...

Vue开发前端图片上传给java后端

前端效果图 图片上传演示 1 前端代码 <template><div><!-- 页面标题 --><h1 class"page-title">图片上传演示</h1><div class"upload-container"><!-- 使用 van-uploader 组件进行文件上传&#xff0c;v-model 绑…...

react hooks--useCallback

概述 useCallback缓存的是一个函数&#xff0c;主要用于性能优化!!! 基本用法 如何进行性能的优化呢&#xff1f; useCallback会返回一个函数的 memoized&#xff08;记忆的&#xff09; 值&#xff1b;在依赖不变的情况下&#xff0c;多次定义的时候&#xff0c;返回的值是…...

828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台

828华为云征文&#xff5c;华为云Flexus X实例docker部署最新Appsmith社区版&#xff0c;搭建自己的低代码平台 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Ng…...

webservice cxf框架 jaxrs jaxws spring整合 接口测试方法 wsdl报文详解 springboot整合 拦截器 复杂参数类型

webservice cxf框架 jaxrs jaxws spring整合 【java进阶教程之webservice深入浅出【黑马程序员】】 webservice接口测试方法 【SoapUI让你轻松玩转WebService接口测试【特斯汀学院】】 webservice wsdl报文详解 【webservice - 尚硅谷周阳新视频】 webservice springbo…...

2024AI做PPT软件如何重塑演示文稿的创作

现在AI技术的发展已经可以帮我们写作、绘画&#xff0c;最近我发现了不少ai做ppt的工具&#xff01;不体验不知道&#xff0c;原来合理使用AI工具可以有效的帮我们进行一些办公文件的编写&#xff0c;提高了不少工作效率。如果你也有这方面的需求就接着往下看吧。 1.笔灵AIPPT…...

谷神后端list转map

list转map /*** list2map* list转map&#xff1a;支持全量映射、单字段映射。* * param $list:list:列表。* param $key:string:键。* param $field:string:值字段域。** return map**/ #function list2map($list, $key, $field)#if ($vs.util.isList($list) and $vs.util.is…...

Java集合(Map篇)

一.Map a.使用Map i.键值&#xff08;key-value&#xff09;映射表的数据结构&#xff0c;能高效通过key快速查找value&#xff08;元素&#xff09;。 ii.Map是一个接口&#xff0c;最常用的实现类是HashMap。 iii.重复放入k-v不会有问题&#xff0c;但是一个…...

VUE3配置路由(超级详细)

第一步创建vue3的项目...

【笔记】机器学习算法在异常网络流量监测中的应用

先从一些相对简单的综述类看起&#xff0c;顺便学学怎么写摘要相关工作的&#xff0c;边译边学 机器学习算法在异常网络流量监测中的应用 原文&#xff1a;Detecting Network Anomalies in NetFlow Traffic with Machine Learning Algorithms Authors: Quc Vo, Philippe Ea, Os…...

江协科技STM32学习- P15 TIM输出比较

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

使用python-pptx批量删除备注:清除PPT文档中的所有备注信息

哈喽,大家好,我是木头左! 在制作和分享PPT时,经常需要添加一些注释或备注来帮助观众更好地理解内容。然而,有时候需要将这些备注从PPT中移除,以保持演示的简洁性。幸运的是,可以使用python-pptx库来实现这一目标。本文将详细介绍如何使用python-pptx批量删除PPT中的备注…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...