/ Python

使用 Python 管理数据

最近有个自己的项目需要管理一些数据,虽然只有几百条,但是手动管理起来很麻烦,而且经常出错,所以想搞个系统,把这些数据都管理起来,方便后续使用。记得最开始做 iOS 开发的时候用过 Parse,觉得这样的服务挺不错,能为一些对后端要求不高的应用节省很多开发成本。可惜现在 Parse 关掉了。国内也有家提供 BAAS 服务的厂商 Leancloud,看了下文档,感觉和 Parse 几乎没啥区别,貌似就是照着 Parse 的接口写的。

Leancloud 支持的语言很多,由于我只用到了数据存储的服务,所以尝试用 Python 写了一些增删改查的操作,体验下来感觉基本需求都能满足,但是也遇到一些问题,一是在查找的时候返回来的 Query 对象虽然是个 List,但是不能遍历,只能取 firstObject,有点反人类。我在它们的论坛上也找到了这个问题,但是时隔一年了也没修复。第二个是我想把数据导出来,但是在查询的时候最多只能获取 1000 条数据,再多的话就只能自己用 REST API 导出全部数据了,再自己做解析。

由于 Leancloud 的这两个问题无法解决,而且只有付费用户才能提工单获得支持,因此还是自己搞一套吧。由于用户只有自己,也不需要 UI,通过命令行操作就够了,用 Python 写起来也快,使用 Python + MySQL 完全可以实现我的需求。用了 1 整天时间就完成了整个系统,其实也就几百行代码 😂。

直接写 MySQL 语句很痛苦,特别是对于 SQL 命令不是很熟悉的我,所以 ORM 库就帮了我的大忙了,Google 找到了 peewee 这个轻量级的 ORM 库,官方文档很详细,上手也很简单。建表、增删改查数据没写一行 SQL,简直不要太爽 😂。

之前的数据在 Google Sheet 上,导出为 csv 然后用 Python 读到 MySQL 里,由于需要用到 json,又从 MySQL 中读出来转成 json,折腾了一圈。原来还想把数据丢到树莓派上,可是树莓派在家里放着,从外网访问比较麻烦,所以还是先在 Mac 上吧。为了数据安全,每天把 MySQL 导出备份到 Dropbox,以防万一。