[分享] [自制小工具] 在终端对MySQL表进行简单操作的Py

2020-08-13  本文已影响0人  張貳龍

一、背景

由于近期处于长期找工作的状态,而且有使用数据库记录事情的习惯(主要为了练习SQL),所以把投递简历的申请记录在数据库中,也方便后续的总结分析。

但是手动输入SQL语句来进行操作比较麻烦,用存储过程做交互的效果不是太好,同时又学过Python,所以尝试动手写了一个小脚本工具,用来进行交互式的操作,解放双手。

如果有同学有类似的需求,拿来按照实际情况改一改就可以使用了。

二、运行环境

三、功能介绍

小工具共有三个功能:

  1. 通过关键字对数据表进行检索;
  2. 添加新的申请记录;
  3. 对已有记录进行数据的更新。

(以下使用测试数据进行介绍)

(一)开始

开始

首次运行需输入数据库密码进行连接。(这里有个明显的缺点,密码是显式输入的,从网上搜索到的解决方案是通过安装一个getpass库来解决,不过这里没有实践)

image-20200812231511480.png

(二)检索

检索

输入0进行检索操作,然后会提供表的所有列名,按照索引选择列名,输入相应的关键字即可进行检索。(这里是按照like '%关键字%'的方式进行检索)

还可以同时选择多列,使用半角逗号(,)分隔即可,效果如下:

多列检索

(三)添加

添加

添加过程主要有以下几步:

  1. 输入公司名称及简称。首先通过公司名称关键字进行检索,查出表中已有的公司名称及其简称,如果与要插入的公司名称一致,直接通过索引进行选择即可,这样主要是为了避免同一公司录入名称不同的情况;如果没有查到,也可手动输入。
  2. 依次输入其他相关字段,方式类似。
  3. 最后,部分字段需要完全手动输入。(因这些字段的值存在重复的可能性较小,所以不采用上面的方式)

通过以上几步即可完成添加。

(四)更新

更新(1) 更新(2)

更新申请信息需先检索出相关记录(操作方式同检索部分),然后提供想要更新的记录的idx(表中的主键),最后选择列名并输入新值进行更新。

(五)退出

在输入命令的地方输入exitquitq中任意一个即可退出。

退出

四、其他说明

(一)关于表结构

由于数据量不会太大,且暂不会与其他表产生关联,所以在建表的时候没有遵循相关范式。代码是基于以下表结构写成:

Table Structure:
+--------------+----------+------+-----+-------------------+-------------------+
| Field        | Type     | Null | Key | Default           | Extra             |
+--------------+----------+------+-----+-------------------+-------------------+
| idx          | int      | NO   | PRI | NULL              | auto_increment    |
| title        | text     | YES  |     | NULL              |                   |
| company      | text     | YES  |     | NULL              |                   |
| co_abbr      | text     | YES  |     | NULL              |                   |
| city         | text     | YES  |     | NULL              |                   |
| salary_floor | double   | YES  |     | NULL              |                   |
| salary_cap   | double   | YES  |     | NULL              |                   |
| source       | text     | YES  |     | NULL              |                   |
| channel      | char(15) | YES  |     | NULL              |                   |
| apply_time   | datetime | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| viewed       | int      | YES  |     | NULL              |                   |
| feedback     | text     | YES  |     | NULL              |                   |
| interview    | int      | YES  |     | NULL              |                   |
| remarks      | text     | YES  |     | NULL              |                   |
| url          | text     | YES  |     | NULL              |                   |
+--------------+----------+------+-----+-------------------+-------------------+

(二)关于用到的Python库

在一开始为了可以适用于多种DBMS,用的是sqlalchemy,但是相对于我的这种小脚本,用ORM有点大材小用的样子,所以选择了pymysql。

为了方便格式化输出查询出的表格,用到了pandas.read_sqlpandas.DataFrame.to_markdown方法,在实际使用的时候发现,这个方法还需要依赖tabulate库,体积很小,安装一下就可以了。

(三)关于操作系统

在脚本中用到了shell命令clear,用来在终端清屏,在Windows下将其改成cls即可。

不过既然已经在用Windows,应该不大用得到这种小工具了,安装MySQL提供的MySQL For Excel应该就可以完美的解决这些问题。(参考:https://www.w3resource.com/mysql/exporting-and-importing-data-between-mysql-and-microsoft-excel.php

(四)关于代码

算上注释不过二百多行,而且只有一个小文件,没有必要传到代码仓库,所以传到网盘供有需求的同学自取(链接: https://pan.baidu.com/s/17fB4a3AbjgYqv12PRReY_g 提取码: zw8k),下载后修改一下数据库连接信息,以及相应的表名、列名等即可。有兴趣的同学还可以加点代码通过读取自己的配置信息,使代码更加可定制化。

五、结语

此次制作这个工具主要是为了日常操作方便,同时练习一下Python。由于我不是专业开发人员,所以代码可能会很业余,如果大家发现其中有错误、不妥,或有更好的建议,还请不吝赐教,谢谢!

上一篇下一篇

猜你喜欢

热点阅读