测试文件和数据库文件
接口测试
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定义的接口,确认接口是否正常工作,主要是测试以下内容
可访问性:确认客户端能否成功访问接口(如
manage.py
定义的路由),检查服务器是否正常运行。参数传递:验证客户端是否能够通过接口传递参数,确保这些参数能够被正确接收和处理。
响应正确性:检查接口返回的响应是否符合预期,包括状态码、响应体内容和格式等。
边界情况:测试接口在不同输入(如有效、无效或缺失的参数)情况下的表现,确保其稳定性和错误处理能力。
性能:在一定负载下测试接口的响应时间和处理能力,确保其在高并发情况下依然正常工作。
接口是否正常工作有两个检验方法:
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实例对象功能
路由管理:定义应用的 URL 路由和处理请求的视图函数。
中间件:添加请求和响应的处理逻辑,例如日志记录、认证等。
蓝图:组织大型应用的模块化结构,便于管理和扩展。
配置管理:设置其他应用配置(如调试模式、静态文件目录等)。
扩展管理:集成各种 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')]
哈哈哈,不正常就该像我这样。不干了,干饭!