当前位置: 首页 > 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中的备注…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...