简介
上一篇简单说了下数据的实时显示和曲线的生成,数据最终是要被记录的,所以也就涉及到了数据库的使用,Python下面操作数据库的库很多,这里介绍一个使用比较广泛的库-PyMySQL
PyMySQL
MySQL在本机上的配置
下载
在 MySQL 官网下载链接下载,选择自己的系统的 mysql,windows直接选择下图中打框这个
安装
解压到随便一个盘的根目录,建立环境变量
此电脑 -> 右键属性 -> 高级系统设置 -> 环境变量 ->Path-> 编辑 -> 新建填入 bin 目录的路径 -> 确定
我的目录如下
C:\mysql\bin
不会的可以百度查,一查一大堆
配置ini文件
在C:\mysql\
下面建立一个my.ini
文件,里面的内容如下
[mysqld]
# skip-grant-tables
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:\mysql # 有些电脑需要用双斜线\\ =====================这里要改成自己的
# 设置mysql数据库的数据的存放目录
datadir=C:\mysql\Data # 此处同上 =====================这里要改成自己的
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
初始化数据库
用管理员打开 cmd,进入 mysql 的 bin 目录,输入下面代码:
mysqld --initialize --console
运行成功后,记下 password is generated for root@localhost: 后面的初始密码,一定要记住,要不很麻烦
安装 MySQL 服务
同样在 cmd 的 bin 路径下,输入如下代码:
mysqld --install
至此就安装完事了
MySQL 服务相关操作
net start mysql #启动服务
mysql -u root -p #登录 密码就输入之前让你记住的,记不住的看重置密码章节
进入MySQL的界面后(其实就是命令行)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; #重置密码
重置密码(希望没人看到这)
创建文件mysql-init.txt
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
然后启动服务
net start mysql #启动服务
之后在任务管理器
中结束掉mysqld.exe的进程,之后在windows的服务
中启动mysql的服务
mysql -u root -p
此处的密码就是你那个mysql-init.txt文件中创建的,我也不知道为啥这么做,我只不过国内国外网站查了一圈,这样做立刻成功
vscode端配置
vscode端没什么好说的,直接装个扩展就行
MySQL
装上后看两下就会了,没什么好说的
代码
SQL类
我把整个SQL的操作写成了一个类,里面建了几个方法
定义一个DBConnection的类,继承自object
- getConnection方法
- isTableExist方法
此方法通过fetchall将数据库中的表取出,取出的表是字典的列表格式,所以需要迭代出每个字典,在取出字典中的值,这个值就是表的名称,使用in方法可以判断表是否存在于数据库中
- createTable方法
创建表方法,其实就是执行一大段SQL命令
CREATE TABLE snap7(id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
dateTime DATETIME,
temperature FLOAT,
flow FLOAT,
pressure FLOAT,
oxygen FLOAT,
dust FLOAT)
ENGINE = InnoDB
DEFAULT CHARSET = utf8
COLLATE = utf8_bin
AUTO_INCREMENT = 1;
- createDataRow方法
此方法有一个参数,这个参数是个元组,把需要的数据写到元组里当做参数调用就行,不管你插入的数据类型是啥,在这里全是%s
测试一下
创建一个DBconnection实例,之后就可以插入数据了,第一个ID因为是递增的,可以给个0,这样数据库就可以自己生成ID号.
使用strftime按照给定的格式格式化一下日期时间,之后插入进去
插入后就这样
在之前的代码中调用
之前通过PLC获取的数值是一个列表的形式,而且也没有ID和日期时间,所以需要新建一个列表,append上ID和日期时间,再把列表中的PLC数据传进去,使用tuple方法转成元组,使用createDataRow方法定时插入就OK了
插入的样子
代码下载
见前文