测试平台系列(52) 改造异步数据库连接方案

简介: 改造异步数据库连接方案

大家好~我是米洛


我在从0到1打造一个开源平台, 也在编写一套完整的接口测试平台系列教程,希望大家能够多多支持。


回顾


上节我们编写了异步sql连接的功能,经过博主一番激烈的思想斗争,还是决定暂时先使用同步的方式。

为什么呢?主要是以下几个原因:

  • 异步(AsyncEngine)的功能还很多都不完善
    举个例子,为了让在线执行SQL功能更加友好,并且防止用户写错表名,我们需要展示出db下有哪些表,如果能展示出表有什么字段,那就更完美了!但异步Engine的话,还确实很多功能都是支持不了的,还需要等他们慢慢完善。
  • pg的异步库还没选定
    虽然有一定的方向,比如GINO这样的引擎都做了一些sqlalchemy的功能,并不只是单纯的异步数据库driver。而同步的,我们可以用现有的psycopg2
  • 异步同步性能差距目前来看不算大

开始改造


  • 修改get_jdbc_url方法

52.jpg

mysql使用官方的mysql-connetor,pg使用psycopg2


  • 修改test_connection方法

53.jpg

去掉了async相关代码


  • 修改get_connection方法

54.jpg

除了改掉了异步代码以外,注箭头处

这边缓存了engine和session2个变量,而不只是单纯的session,因为我们获取数据库有哪些表,需要用到engine

虽然说show tables也可以拿到表信息,但是不够全面。

编写在线执行SQL的方法


在DbConfigDao.py文件中增加online_sql方法,接受2个参数:

  • 数据库配置id
  • sql 具体的sql语句

55.jpg

image

56.jpg

image

57.jpg

image

可以看到,我们先通过get_connection获取到这个配置的连接session,然后execute执行了sql语句,最后调用:


result.mappings().all()

拿到返回数据,这个mappings()的好处是什么呢?就是可以把执行结果按照下面的格式返回,当然也是查了许久得出的结果。


[
  {"字段1": "字段1的值"}
]

编写接口


58.jpg

新增了online路由

这里的参数是配置id和sql语句,我们来看看对应的返回结果:

59.jpg

image

60.jpg

image

61.jpg

image

可以看到,基本上就是原生执行sql了,非常好用!因为本人目前电脑没有装pg,所以对pg的兼容性可能不是很好,大家有疑问的话可以给我提issue,我会尽快兼容的。

项目地址: https://github.com/wuranxu/pity


因为同步异步的方法,有一些耽搁了进度,不要紧,下一节后端的内容会偏少,主要讲怎么想datagrip一样展示数据表结构,并让用户可以在线编写sql,最终就是嵌入到数据构造器(前置条件)之中。


PS: 项目有了新的域名了,大家可以通过下面的网址在线体验。这个域名我一口气买了10年,希望自己也能继续维护下去~


http://test.pity.fun




相关文章
|
6天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
1月前
|
Kubernetes 测试技术 Perl
混沌测试平台 Chaos Mesh
混沌测试平台 Chaos Mesh
64 1
|
6天前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
29天前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
46 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
29天前
|
测试技术 开发工具 iOS开发
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
63 1
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
|
29天前
|
测试技术 数据安全/隐私保护 iOS开发
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
61 0
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
|
29天前
|
测试技术 虚拟化 iOS开发
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
84 0
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
|
29天前
|
测试技术 开发工具 虚拟化
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
27 0
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
|
30天前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
59 1
|
1月前
|
JavaScript Java Maven
毕设项目&课程设计&毕设项目:springboot+vue实现的在线求职管理平台(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和Vue.js实现的在线求职平台。该平台采用了前后端分离的架构,使用Spring Boot作为后端服务
毕设项目&课程设计&毕设项目:springboot+vue实现的在线求职管理平台(含教程&源码&数据库数据)