常见问题:
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')