测试平台系列(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




相关文章
|
23天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
29天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
90 11
|
27天前
|
监控 测试技术 定位技术
HTTP代理IP响应速度测试方案设计与指标体系
随着数字化发展,网络安全、隐私保护及内容访问自由成为核心需求。HTTP代理因其技术优势成为热门选择。本文介绍HTTP代理IP响应速度测试方案,包括基础性能、稳定性、地理位置、实际应用、安全性测试及监控指标,推荐测试工具,并提供测试结果评估标准。
37 2
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
41 6
|
2月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
2月前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
57 6
|
2月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
2月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
159 1
|
2月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
131 1
|
3月前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。