在jupyter中read_sql创建连接数据库失败

以下代码执行时候出错了


import pandas as pd
import pymysql
from sqlalchemy import create_engine
engine=create_engine('mysql+pymysql://root:mysql@127.0.0.1/jing_dong')
read1=pd.read_sql(sql='SELECT * FROM goods', con=engine)
read1

报错信息为__init__() got multiple values for argument 'schema'
安装了sqlalchemy,不过我看了一下在python的setting中没有sqlalachemy这个包,但是import导入时候没有报错
pandas的版本是1.3.1,jupyter的版本是1.0.0,求解答哪里错了

【以下回答由 GPT 生成】

问题的根本原因是在创建数据库引擎时传递了多个值给了 'schema'参数。这是因为在创建引擎时传递了一个不正确的URL格式。

为了解决这个问题,你可以按照以下步骤进行操作:

  1. 首先,检查一下你的数据库连接URL的格式是否正确。根据你提供的代码,URL格式应该是正确的。但是,确认一下数据库的用户名和密码是否正确,并确保数据库实例是在本地主机的127.0.0.1上。

  2. 然后,我们需要检查一下安装情况。首先,确认你是否已经正确安装了pandas库和pymysql库。可以使用以下命令来确认:

!pip show pandas
!pip show pymysql

确保这两个库的版本都满足你的需求。如果没有安装,可以使用以下命令进行安装:

!pip install pandas
!pip install pymysql
  1. 接下来,我们需要安装sqlalchemy库。可以使用以下命令来安装:
!pip install sqlalchemy

确认sqlalchemy库安装完毕后,我们可以使用以下代码来验证是否正确导入了库:

import sqlalchemy

如果没有报错信息,则说明库已成功导入。

  1. 最后,我们需要修改一下创建数据库引擎的代码。根据错误信息,我们可以得知错误是发生在 'schema' 参数上。我们可以通过添加 schema='jing_dong' 的关键字参数来指定数据库模式。修改后的代码如下:
import pandas as pd
import pymysql
from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://root:mysql@127.0.0.1/jing_dong', schema='jing_dong')
read1 = pd.read_sql(sql='SELECT * FROM goods', con=engine)
read1

现在,你应该可以成功执行代码并从数据库中读取数据了。

如果你按照以上步骤操作仍然遇到问题或报错,请提供更详细的错误信息和相关环境信息,我将尽力帮助你解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

引用 皆我百晓生 小程序回复内容作答:
根据报错信息,问题可能出在传递给create_engine函数的连接字符串上。"schema"参数用于指定数据库的模式,但传递的是一个无效的参数。

尝试将engine=create_engine('mysql+pymysql://root:mysql@127.0.0.1/jing_dong')改为engine=create_engine('mysql+pymysql://root:mysql@127.0.0.1/jing_dong?charset=utf8')。这样添加的charset=utf8参数可能会解决连接问题。

如果还是无法解决问题,可能是因为版本不兼容或者缺少某些依赖包。您可以尝试更换较低版本的pandas或sqlalchemy,或者检查是否安装了必要的MySQL驱动程序。