将车端采集的数据写入到MongoDB数据库时,将解析的数据写入到mysql,由于公司只有服务器,所以还是使用docker部署mysql数据库。
一、镜像拉取
docker pull mysql:latest
执行上述代码后,可以使用如下命令查看查看镜像是否下载成功:
docker images
二、创建Mysql容器
2.1 创建宿主机目录
mkdir -p mysql
作用是数据备份。
2.2 创建docker容器
执行如下命令:
docker run -d --restart=always \
--name mysql_bigdata \
-p 3307:3306 -e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=****** mysql:latest \
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
2.3 启动docker容器
docker exec -it mysql_bigdata /bin/bash
2.4 添加新用户
进入mysql客户端
mysql -uroot -p ******
添加新用户并赋予权限
# 添加用户并赋予权限、创建数据库
create user 'bigdata_rw'@'%' identified by '*******'; # 创建用户
create user 'bigdata_ro'@'%' identified by '********; # 创建用户
GRANT SELECT, INSERT, UPDATE, DELETE ON bigdata.* TO 'bigdata_rw'@'%'; # 赋予读写权限
GRANT SELECT ON bigdata.* TO 'bigdata_ro'@'%'; # 赋予只读权限
使用命令进入mysql客户端
mysql -h 10.***.**.** -P 3306 -u bigdata_rw -p ******
三、python操作mysql数据库
3.1 python链接mysql数据库
# 读写
mysql_bigdata_connection_rw = {'host' : '10.xxx.xx.xx','user' : 'bigdata_rw','passwd' : 'xxxxxx','db' : 'bigdata','port' : 3301,'charset' : 'utf8','connect_timeout' : 60}connection = pymysql.connect(**mysql_bigdata_connection_rw)
3.2 执行查询操作
# 查询msyql数据库数据conn_mysql = conn.mysql_bigdata()
cur_mysql = conn_mysql.cursor()query_sql = f"SELECT mid, vin, upload_date FROM {source_table_name} WHERE data_type = 'json' AND upload_date = '{end_date}'" cur_mysql.execute(delete_query)
conn_mysql.commit()# 写入mysql数据库
insert_data = (mid, vin, upload_date)
insert_query = f"INSERT INTO {mysql_table_name} (mid, vin, upload_date) VALUES (%s, %s, %s)"cur_mysql.execute(insert_query , insert_data)
conn_mysql.commit()