自从 databend-go release 后,最近大部分时间都在与 Python 搏斗😂,太长时间没有正儿八经写 Python 了真是磨合了好几天才找到点感觉。
用了差不多两周,databend 的 Python Deiver databend-py 以及支持 SQLAlchemy
语法的 databend-sqlalchemy 已经基本可用。不得不说 Python 在数据的生态里还是王者,前几天有用户在使用 go driver 的时候遇到了一个 data type parser 的问题,之前在实现过程中就遇到过类似的类型问题,这种问题在强类型语言里简直就是灾难,但是对于 Python 来说就不存在。所以最后用户还是用了 Python 的 driver 解决了问题,看来后面要认真打磨 databend-py 了。
在使用方面也是 python 占优,pip install 然后 import 直接就是手到擒来:
1 | pip install databend-py |
1 | from databend_py import Client |
不过 databend-py
仅是提供了 python 连接到 databend cloud 的桥梁,并不能像使用 ORM 工具一样使用 cursor.next
、fetchall
等方法。在准备实现 dbt adapter 的时候发现需要依赖上面提到的 ORM 的方法,在 Python 生态里 SQLAlchemy 是 Python 中最有名的 ORM 工具,所以就有了 databend-sqlalchemy
这个项目。由于时间紧迫,先实现了对接 dbt 必须要用到的 cursor, description, next, fetch
方法,在 databend-py
的铺垫下,实现起来确实方便很多。
1 | cursor = connector.connect('http://root:@localhost:8081').cursor() |
几个字总结一下近期的状态就是:与 Python 搏斗
,当然接下来可以预见的依然会跟 python 搏斗一段日子,因为最近要搞的 dbt adapter 是一个全新的, 陌生领域,完全就是一头雾水,所以接下来可能会先写几篇关于 dbt 的学习文章吧。
再就是最近开的 repo 有点多,加上实现的时间比较紧,感觉有些疲于应对,很多实现只能草草了事,估计 bug 会比较多,所以后面应该会多抽出一些个人的时间来完善这些项目。