常见问题:
1.数据库密码有特殊字符
使用urllib.parse.quote_plus 编译密码
mysql_engine = create_engine((f"mysql+pymysql://root:%s@10.0.0.2:3306/mydb")%urllib.parse.quote_plus("pass@=aaaa"))
2.设置字段类型
设置特定类型,和指定日期类型
data1 = pd.read_excel("C:/work/20230818***/数据导入.xlsx",dtype={0:"int", 2:"str", 3:"str"},parse_dates=[4,5])
eg:
from sqlalchemy import create_engine
import sqlalchemy
import pandas as pd
import urllib.parse
import datetime
from io import StringIO
# use this func, you need to change the cancel , which below # change the test or proc env
# be sure you have encoded the tag, and truncate the old db data
if __name__ == '__main__':
data1 = pd.read_excel("C:/work/20230818***/数据导入.xlsx",dtype={0:"int", 2:"str", 3:"str"},parse_dates=[4,5])
# set Create_Time
# get current time
now_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
data1["Create_Time"] = now_time
# set special column
data1["Oper_Sign"] = 'admin'
# change the test or proc env
# mysql_engine = create_engine(f"mysql+pymysql://账号名:密码@IP地址:3306/数据库名")
mysql_engine = create_engine((f"mysql+pymysql://root:%s@10.0.0.2:3306/mydb")%urllib.parse.quote_plus("pass@=aaaa"))
data1.to_sql(name='表名', con=mysql_engine, if_exists="append", index=False)
print('done')