将mysql的输出文本写回mysql
1 准备工作
1.1 环境准备
操作系统:Microsoft Windows 10 专业工作站版
软件版本:Python 3.9.6
第三方包:
pip install pandas2.1.0
pip install pymysql1.1.0
pip install sqlalchemy==2.0.23
Get-WmiObject -Class Win32_OperatingSystem | Select-Object -Property Caption
python –version
pip install pandas==2.1.0 -i https://mirrors.aliyun.com/pypi/simple/
pip install pymysql==1.1.0 -i https://mirrors.aliyun.com/pypi/simple/
pip install sqlalchemy==2.0.23 -i https://mirrors.aliyun.com/pypi/simple/

1.2 数据库准备
数据库版本:Ver 8.1.0 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql --version
mysql -h 127.0.0.1 -P 3306 -u root -p"123456"

1.3 数据准备
运行以下python代码准备模拟数据用于测试。
import os
if not os.path.exists('./datas'):
os.mkdir('./datas')
text = '''+-------------+--------------+--------------+-------------+
| customer_id | name | visited_on | amount |
+-------------+--------------+--------------+-------------+
| 1 | Jhon | 2019-01-01 | 100 |
| 2 | Daniel | 2019-01-02 | 110 |
| 3 | Jade | 2019-01-03 | 120 |
| 4 | Khaled | 2019-01-04 | 130 |
| 5 | Winston | 2019-01-05 | 110 |
| 6 | Elvis | 2019-01-06 | 140 |
| 7 | Anna | 2019-01-07 | 150 |
| 8 | Maria | 2019-01-08 | 80 |
| 9 | Jaze | 2019-01-09 | 110 |
| 1 | Jhon | 2019-01-10 | 130 |
| 3 | Jade | 2019-01-10 | 150 |
+-------------+--------------+--------------+-------------+'''
with open('./datas/customer.txt','w',encoding='utf-8') as file:
file.write(text)
运行前:
代码运行前如图,只有一个datas.py的文件。

代码运行后如图,在运行前的基础上生成了一个datas的文件夹以及一个存有用来测试的模拟数据文件,也可直接从mysql端复制粘贴并手动创建即可,值得注意的是不能有任何空行。

2 mysql端配置
2.1 连接mysql
在powershell终端使用命令连接mysql数据库,注意这里先不指定需要连接的数据库名。
mysql -h 127.0.0.1 -P 3306 -u root -p"123456"

2.2 确保当前数据库为空
查看当前所在的数据库,确保该值为空。
select database();

2.3 查看此时变量character_set_connection对应的编码值
在确保database()的值为空的前提下查看character_set_connection对应的编码值。
show variables where Variable_name = 'character_set_connection';

变量character_set_connection对应的编码值为gbk,后面的配置需要用到此参数。
2.4 创建数据库
在mysql中创建一个名为mydatabase的数据库默认编码为UTF8供pymysql连接。
DROP DATABASE IF EXISTS mydatabase;
CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET UTF8;

3 python端配置
3.1 python代码思路
① 先用正则表达式对测试文本数据customer.txt清洗;
② 将清洗的结果保存为customer.csv;
③ Pandas读取customer.csv文件得到数据帧df;
④ 创建mysql数据引擎并将数据帧df写入到数据库mydatabase中保存为表customer
3.2 python代码源码
函数参数:
① tablename:文本文件名→mysql数据表名
② date_times:数据中需要转换为日期类型的数据对应的字段名列表。
注意事项:
确保26行的charset值与2.3看到的变量character_set_connection对应的编码值一致。
import re
import pandas as pd
from sqlalchemy import create_engine
# 准备数据
def ready_datas(tablename:str,date_times:[str]=''):
# 处理文本数据
with open("./datas/{}.txt".format(tablename), "r", encoding="utf-8") as file:
text = file.read()
text = re.sub(r"[ ]*[\|][ ]*", ",", text)
text = text.split('\n')[1]+'\n'+'\n'.join(text.split('\n')[3:-1])
text = text.replace(",\n,", "\n")[1:-1]
# 转换为csv文件
with open("./datas/{}.csv".format(tablename), "w", encoding="utf-8") as file:
file.write(text)
# 转换为datafram数据
df = pd.read_csv("./datas/{}.csv".format(tablename),encoding='utf-8')
print('dataframe {}:success'.format(tablename))
# 数据覆盖写入mysql
if date_times != '':
for date_time in date_times:
df = df.astype({date_time:"datetime64[ns]"})
# df[date_time] = pd.to_datetime(df[date_time])
# print(df.dtypes)
engine = create_engine('mysql+pymysql://root:123456@localhost/mydatabase?charset=GBK')
df.to_sql(name='{}'.format(tablename),index=None,con=engine,if_exists='replace')
print('table {}:success'.format(tablename))
return df
customer = ready_datas('customer',date_times=['visited_on'])
代码运行前如图所示,datas文件夹中仅有customer.txt文件。

代码运行后如图所示,datas文件夹下生成一个customer.csv的文件。

4 结果验证
打开mysql并连接创建好的数据库mydatabase。
mysql -h 127.0.0.1 -P 3306 -u root -p"123456" mydatabase;

使用mysql的dql语句查看生成的数据表customer的数据与表格文件customer.csv的数据是否一致。
select * from customer limit 3;

查看结果表明数据确实一致。
将mysql的输出文本写回mysql的更多相关文章
- 使用log4net 日志输出到数据库MySQL
使用Log4Net的输出日志到MySQL 使用步骤如下: 1. 添加引用Log4Net.dll, mysql.data.dll到工程中 note: mysql.data.dll 版本要高,最好到mys ...
- 转】MySQL客户端输出窗口显示中文乱码问题解决办法
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4008095.html 感谢! 最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显 ...
- Mysql:输出到文件
mysql>tee /home/a.txt mysql>show processlist; mysql>exit tee命令能重定向输出,同时屏幕会同步显示.
- MySQL客户端输出窗口显示中文乱码问题解决办法
最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示:
- MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项
以下的文章主要介绍的是MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项是值得我们大家注意的,我们大家可能不知道过多的对索引进行使用将会造成滥用.因此MySQL索引也会有它的缺点: 虽然索引 ...
- mysql进阶(二十二)MySQL错误之Incorrect string value: '\xE7\x81\xAB\xE7\x8B\x90...中文字符输入错误
MySQL错误之Incorrect string value: '\xE7\x81\xAB\xE7\x8B\x90...' for column 'tout' at row 1中文字符输入错误 在实验 ...
- mysql必知必会--MySQL简介
什么是MySQL MySQL已经存在很久了,它在世界范围内得到了广泛的安装和使用. 为什么有那么多的公司和开发人员使用MySQL?以下列出其原因. 成本--MySQL是开放源代码的,一般可以免费使用( ...
- ubuntu下mysql的常用命令,MySQL数据库的基本操作命令
一.mysql服务操作 0.查看数据库版本 sql-> status; 1.net start mysql //启动mysql服务 2.net stop mysql //停止mysql服务 3 ...
- MySQL优化技巧之五(mysql查询性能优化)
对于高性能数据库操作,只靠设计最优的库表结构.建立最好的索引是不够的,还需要合理的设计查询.如果查询写得很糟糕,即使库表结构再合理.索引再合适,也无法实现高性能.查询优化.索引优化.库表结构优化需要齐 ...
- 开启Mysql慢查询来优化mysql
开启Mysql慢查询来优化mysql 优化sql语句是优化数据库的一个很重要的方面,那么怎么发现那些耗时耗资源的sql语句呢,开启Mysql慢查询! 1.查看是否开启慢查询,默认情况下是关闭的.你的m ...
随机推荐
- quarkus数据库篇之三:单应用同时操作多个数据库
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 一个应用同时连接多个数据库进行操作,这是常见 ...
- CodeForces 1408D Searchlights
题意 在二维平面有\(n\)个海盗,\(m\)个探照灯,你有两种操作 将所有海盗往上走一步 将所有海盗往右走一步 设海盗为\((a_i,b_i)\),探照灯为\((c_j,d_j)\),当且仅当\(a ...
- BeanUtils.copyProperties:曾经是我的女神,现在是我的毒药。
前言 BeanUtils.copyProperties十有八九是你这些年工作中用的很多的其中一个,不管是Apache的还是Spring的. 网上的解释浩如烟海,我这边用一个超简单的例子直观展示给你看. ...
- 完全卸载MySQL服务的方法
1. 重新运行安装文件,单击remove移除mysql.此时安装目录中的文件没有完全移除,需要手动删除安装目录的Mysql文件夹. 2. 如果MySQL服务没有移除的话,以管理员方式运行cmd命令:s ...
- 初识Storm之HelloWorld程序源码
1. 新建一个Maven项目,pom.xml代码如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- python一键过杀软
python过杀软新 利用python加载shellcode过360.火绒等杀软 先上代码 将以下代码保存到 mt.py import base64 import os import shutil b ...
- Note -「网络流 flows」
基本没有严谨证明. Part. 1 概念 Part. 1-1 流网络 流网络是一个有向图(不考虑反向边),我们把这个图记为 \(G=(V,E)\). 其中有两个特殊的点 \(s,t\),分别成为源点和 ...
- css的认知与样式
目录 1. 介绍css 2. CSS语法 3. CSS注释 4. CSS中的颜色值 5. CSS长度单位 6. html引入CSS的三种方法 6.1 行内样式(内联样式) 6.2 内嵌样式 6 ...
- SQL-报错注入
updatexml报错注入 updatexml (XML_document, XPath_string, new_value): 第一个参数:XML_document是String格式,为XML文档对 ...
- 模块化打包工具-Webpack插件与其他功能
1.Webpack插件机制 上一篇提到的webpack的loader可以用来加载资源,包括各种css,图片文件资源,实现打包文件的功能,而webpack的插件则起到了加强webpack的作用,可以完成 ...