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

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

作者: 米洛丶 | 来源:发表于2021-09-07 11:56 被阅读0次

    大家好~我是米洛

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

    欢迎关注我的龚仲耗测试开发坑货,获取最新文章教程!

    回顾

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

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

    • 异步(AsyncEngine)的功能还很多都不完善

      举个例子,为了让在线执行SQL功能更加友好,并且防止用户写错表名,我们需要展示出db下有哪些表,如果能展示出表有什么字段,那就更完美了!但异步Engine的话,还确实很多功能都是支持不了的,还需要等他们慢慢完善。

    • pg的异步库还没选定

      虽然有一定的方向,比如GINO这样的引擎都做了一些sqlalchemy的功能,并不只是单纯的异步数据库driver。而同步的,我们可以用现有的psycopg2

    • 异步同步性能差距目前来看不算大

    开始改造

    • 修改get_jdbc_url方法
    mysql使用官方的mysql-connetor,pg使用psycopg2
    • 修改test_connection方法
    去掉了async相关代码
    • 修改get_connection方法
    除了改掉了异步代码以外,注箭头处

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

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

    编写在线执行SQL的方法

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

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

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

    result.mappings().all()
    

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

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

    编写接口

    新增了online路由

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

    image image image

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

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

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

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

    http://test.pity.fun

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/bunuwltx.html