宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述测试平台系列(52)改造异步数据库连接方案相关的知识,希望能为你提供帮助。
上节我们编写了异步sql连接
的功能,经过博主一番激烈的思想斗争,还是决定暂时先使用同步
的方式。
为什么呢?主要是以下几个原因:
- 异步(
AsyncEngine
)的功能还很多都不完善
举个例子,为了让在线执行SQL
功能更加友好,并且防止用户写错表名,我们需要展示出db下有哪些表,如果能展示出表有什么字段,那就更完美了!但异步Engine
的话,还确实很多功能都是支持不了
的,还需要等他们慢慢完善。
- pg的异步库还没选定
虽然有一定的方向,比如GINO这样的引擎都做了一些sqlalchemy的功能,并不只是单纯的异步数据库driver。而同步的,我们可以用现有的psycopg2
。
- 异步同步性能差距目前来看不算大
- 修改get_jdbc_url方法
文章图片
- 修改test_connection方法
文章图片
- 修改get_connection方法
文章图片
这边缓存了engine和session2个变量,而不只是单纯的session,因为我们获取数据库有哪些表,需要用到
engine
。虽然说
show tables
也可以拿到表信息,但是不够全面。编写在线执行SQL的方法
在DbConfigDao.py文件中增加online_sql方法,接受2个参数:
- 数据库配置id
- sql 具体的sql语句
文章图片
文章图片
文章图片
可以看到,我们先通过get_connection获取到这个配置的连接session,然后execute执行了sql语句,最后调用:
result.mappings().all()
拿到返回数据,这个mappings()的好处是什么呢?就是可以把执行结果按照下面的格式返回,当然也是
查了许久
得出的结果。[
{"字段1": "字段1的值"}
]
编写接口
文章图片
这里的参数是配置id和sql语句,我们来看看对应的返回结果:
文章图片
文章图片
文章图片
可以看到,基本上就是原生执行sql了,
非常好用
!因为本人目前电脑没有装pg,所以对pg的兼容性可能不是很好,大家有疑问的话可以给我提issue,我会尽快兼容
的。项目地址: https://github.com/wuranxu/pity
因为同步异步的方法,有一些耽搁了进度,不要紧,下一节后端的内容会偏少,主要讲怎么想datagrip一样展示
数据表
结构,并让用户可以在线编写sql
,最终就是嵌入到数据构造器
(前置条件)之中。【测试平台系列(52)改造异步数据库连接方案】PS: 项目有了新的域名了,大家可以通过下面的网址在线体验。这个域名我一口气买了10年,希望自己也能
继续维护
下去~推荐阅读
- ArrayListVectorLinkedList的底层源码分析和对比
- 9.6-9.12上周精彩回顾
- vivo营销自动化技术解密|开篇
- 网络--路由器
- 安全系列之:跨域资源共享CORS
- ui自动化__unittest单元测试框架
- 密码学系列之:海绵函数sponge function
- 自定义帖子类型常规帖子类型
- “自定义存档”页面不适用于日期或标签,但适用于类别