库版本 pandas 1.1.5 sqlalchemy 1.4.46 pymysql 1.1.0
import pandas as pd
import sqlalchemy.types as tp
from sqlalchemy import create_engine
def type_dict(df):
types_dict = {}
for k, v in zip(df.columns, df.dtypes):
if 'object' in str(v):
types_dict.update({k: tp.VARCHAR(length=20)})
if 'int' in str(v):
types_dict.update({k: tp.INT()})
if 'float' in str(v):
types_dict.update({k: tp.Float})
if 'date' in str(v):
types_dict.update({k: tp.DATE})
return types_dict
#df = pd.read_excel("excel文件路径")
df = pd.read_excel("./1.excel")
dict_types = type_dict(df)
# con = create_engine('mysql+pymysql://数据库名:数据库密码@localhost:3306/数据库库名')
con = create_engine('mysql+pymysql://root:root@localhost:3306/excel1')
df.to_sql(name='e1', con=con, if_exists='append', index=False, dtype=dict_types)
出现报错;
__init__() got multiple values for argument 'schema'
原因:
pandas 与 sqlalchemy 版本不兼容,修改库的版本