DictMySQL - 一个 Python MySQL 类,实现 JSON like query

2016-01-18 07:25:03 +08:00
 ligyxy
工作中需要写不少数据变换的小脚本,读写数据的行数也较多,因此并不喜欢用 ORM 工具。于是自己写了一个基于 PyMySQL 的数据库封装类,便于数据操作。比较有趣的部分是为了支持复杂的 WHERE 和 JOIN 语句,实现了把 dict 拼接成 SQL ,这样输入的参数是一些 JSON like query 。

开发中借鉴了 Medoo 的一些内容,比如 JOIN 、别名和 SQL 函数的符号化表示等,感谢 Medoo 的作者。

使用例子请移步 Github : https://github.com/ligyxy/DictMySQL

文档: https://ligyxy.github.io/DictMySQL
2450 次点击
所在节点    Python
9 条回复
fy
2016-01-18 08:30:33 +08:00
蛤蛤 楼主你不喜欢 ORM 但这不也搞了一个 ORM 的轮子吗?

我觉得 JSON 有个劣势就是不能像是语义的 ORM 一样补全,当然见仁见智。

项目开源的很专业,已 star 。

赞一个,资慈分享
tabris17
2016-01-18 09:04:59 +08:00
老实说,我最恨 Mongo 这种用 JSON 做查询语句的了
master13
2016-01-18 09:15:18 +08:00
赞一个
顺便求 readme 写中文……
sujin190
2016-01-18 09:22:15 +08:00
所有查询使用同一个 cursor ,如果其中一个查询只读取部分数据然后就开始下一个查询不会出错么?
ligyxy
2016-01-18 11:06:23 +08:00
@sujin190 这种情况要有个连接池或者自己来操作 cursor 了吧? 有什么更好的办法?
sujin190
2016-01-18 11:11:47 +08:00
@ligyxy 不如说你查出来有 100 条数据,但只用了 fetchone 取了第一条,然后就开始第二次查询,这种情况会出错的吧,不应该每次查询打开新的 cursor ,完成之后关闭 cursor 么?我看 pymysql 底层 cursor 关闭的时候会继续读取剩余数据,然后才关闭 cursor
ligyxy
2016-01-18 11:12:30 +08:00
@fy 它只拼接 SQL 而没有对象. 事先定义数据表结构也是我不喜欢在数据分析的脚本里用 ORM 的原因.
withrock
2016-01-18 11:35:34 +08:00
能否直接移植 mongodb 的查询方式呢? 不然又得学一套 query 方法.
ligyxy
2016-01-18 12:20:39 +08:00
@sujin190 如果只 fetchone 且不关闭 cursor 就开始另一个查询,这倒不会出错,即便在 pymysql 里也没有出错。但是如果要读完所有返回数据才开始下一条确实有点不方便,我才刚开始看 pymysql 的代码。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251477

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX