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




相关文章
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
2月前
|
消息中间件 canal 缓存
项目实战:一步步实现高效缓存与数据库的数据一致性方案
Hello,大家好!我是热爱分享技术的小米。今天探讨在个人项目中如何保证数据一致性,尤其是在缓存与数据库同步时面临的挑战。文中介绍了常见的CacheAside模式,以及结合消息队列和请求串行化的方法,确保数据一致性。通过不同方案的分析,希望能给大家带来启发。如果你对这些技术感兴趣,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
152 6
项目实战:一步步实现高效缓存与数据库的数据一致性方案
|
2月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
15天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
11天前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
47 1
|
16天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
17 1
|
29天前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
46 2
|
11天前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
33 0
|
2月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
402 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
1月前
|
机器学习/深度学习 存储 测试技术
从0到1:如何规划一套流量回放自动化测试方案
本文介绍了流量回放自动化测试的完整方法,从企业战略到交付的四个关键环节:Discovery(深度挖掘)、Define(定义目标)、Design(详细设计)和Delivery(交付与反馈)。通过这些步骤,帮助企业优化系统性能和稳定性,确保产品的高质量。
54 4