to_sql()导入mysql失败:TypeError: __init__() got multiple values for argument ‘schema‘

查看了本人jupyter的python的版本如下: 

# 查python版本
import sys
print(sys.version)

 原先安装的sqlalchemy版本为2.0.23:

 使用to_sql将DataFrame数据导入mysql时失败了:

        TypeError: __init__() got multiple values for argument ‘schema‘ 

问题:

似乎SQLAlchemy的版本2.0.0(2023年1月26日发布)与pandas的早期版本不兼容。

 方法一:建议升级pandas版本到最新的版本。 

pip install --upgrade pandas

方法二:将SQLAlchemy的版本往下降,这边我采取的方法就是这个

#sqlalchemy
!pip install sqlalchemy==1.4.46 -i https://pypi.tuna.tsinghua.edu.cn/simple

 或

pip install sqlalchemy==1.4.46

 导入数据不出错

import pymysql
from sqlalchemy import create_engine
import sqlalchemy

 

from sqlalchemy import types
def mapping_df_types(df):
    dtypedict = {}
    for i, j in zip(df.columns, df.dtypes):
        if "object" in str(j):
            dtypedict.update({i: types.VARCHAR(225)})
        if "float" in str(j):
            dtypedict.update({i: types.Float(precision=2, asdecimal=True)})
    return dtypedict

dtypedict = mapping_df_types(dfA1_B2)
# 现在应该可以成功运行df.to_sql()方法了
# df.to_sql(name='test', con=con, if_exists='append', index=False, dtype=dtypedict)

 

#df = pd.DataFrame(v[1:],columns=v[0])

#自动转换数据类型
# df = df.infer_objects()
# print(df.dtypes)
#用完slwings包打开的excel后,需要及时关闭,不占用程序
# xls.close()
# app.quit()
try:    
    #fail:如果表存在Pass  #replace:如果表存在,删了表,再建立一个新表,把数据插入 #append:如果表存在,把数据插入,如果表不存在创建一个表
    dfA1_B2.to_sql(
            name='王宁水',
            con=database,
            if_exists='append', 
            index=False,
            dtype=dtypedict
        )
    print("已入库")
except Exception as e:
    print("Error:", e)
    print("入库失败")
    print("请调试")
    

 

这边下载完,若是jupyter ,重启下kernel或者切换一次

 方法三:安装sqlalchemy-databricks 以代替SQLAlchemy,前提把SQLAlchemy卸载干净,以防到时冲突报错。

#测试代码
import pandas as pd
from sqlalchemy import create_engine
import pymysql
pymysql.install_as_MySQLdb()#MySQL 8.0 以上

engine = create_engine('mysql+pymysql://<user>:<password>@localhost:3306/testDB')
sql_query = 'select * from test;'
df_read = pd.read_sql_query(sql_query, engine)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值