Python3 导入 excel 到 MySQL 数据库
不必细说的背景
最近在做一个 Java 项目,需要处理一批历史数据,由于工具限制,采用了 Python 导入 excel 到数据库的方式。
安装依赖包
pip install pandas pip install sqlalchemy pip install pymysql pip install mysql-connector pip install mysql-connector-python
下载缺失文件 typing_extensions.py
如果出现 ModuleNotFoundError: No module named 'typing_extensions',需要去 github 下载 typing_extensions.py,放在 typing.py 所在的 Lib 文件夹。
可选项
如果要导入的 excel 是低版本的(excel 2003),还需要安装 xlrd。
pip install xlrd
Python 代码
import pymysql import pandas as pd from sqlalchemy import create_engine from urllib.parse import quote_plus as urlquote ## 处理密码中的特殊字符 db_user = 'root' db_pass = 'test@2023' db_host = '192.168.1.10' db_port = 3306 db_name = 'db_test' file = r'./test_data.xlsx' excel = pd.read_excel(file) conn_str = f'mysql+mysqlconnector://{db_user}:{urlquote(db_pass)}@{db_host}:{db_port}/{db_name}?charset=utf8' engine = create_engine(conn_str) ##conn = pymysql.connect(host='192.168.1.10',port=3306,user='root',passwd='test@2023',db='db_test',charset='utf8')## to_sql 需要用 engine,不能用 conn excel.to_sql('tbl_test',con=engine,if_exists='replace',index=False) ##表 tbl_test 可以不存在,导入数据,如果存在则替换