Python 为什么mysql.connector.connect会因内部错误而失败?

Python 为什么mysql.connector.connect会因内部错误而失败?,python,mysql,mysql-connector-python,Python,Mysql,Mysql Connector Python,我正在将一个数据库应用程序从Python2.7升级到3.4。我最初使用的是mysqldb,但我正在尝试切换到mysql连接器。我的数据库连接失败,出现内部类型错误。下面是代码和错误: import mysql.connector try: dbh = mysql.connector.connect("localhost","pyuser","pypwd","jukebox") except mysql.conn

我正在将一个数据库应用程序从Python2.7升级到3.4。我最初使用的是mysqldb,但我正在尝试切换到mysql连接器。我的数据库连接失败,出现内部类型错误。下面是代码和错误:

import mysql.connector

try:
  dbh = mysql.connector.connect("localhost","pyuser","pypwd","jukebox")
except mysql.connector.Error as err:
  print("Failed opening database: {}".format(err))
  exit(1)
# python loadcd.py
Traceback (most recent call last):
  File "loadcd.py", line 12, in <module>
    dbh = mysql.connector.connect("127.0.0.1","pyuser","pypwd","jukebox")
  File "/usr/local/lib/python3.4/dist-packages/mysql/connector/__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/mysql/connector/connection.py", line 57, in __init__
    super(MySQLConnection, self).__init__(*args, **kwargs)
TypeError: __init__() takes 1 positional argument but 5 were given
下面是错误:

import mysql.connector

try:
  dbh = mysql.connector.connect("localhost","pyuser","pypwd","jukebox")
except mysql.connector.Error as err:
  print("Failed opening database: {}".format(err))
  exit(1)
# python loadcd.py
Traceback (most recent call last):
  File "loadcd.py", line 12, in <module>
    dbh = mysql.connector.connect("127.0.0.1","pyuser","pypwd","jukebox")
  File "/usr/local/lib/python3.4/dist-packages/mysql/connector/__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/mysql/connector/connection.py", line 57, in __init__
    super(MySQLConnection, self).__init__(*args, **kwargs)
TypeError: __init__() takes 1 positional argument but 5 were given
#python loadcd.py
回溯(最近一次呼叫最后一次):
文件“loadcd.py”,第12行,在
dbh=mysql.connector.connect(“127.0.0.1”、“pyuser”、“pypwd”、“jukebox”)
文件“/usr/local/lib/python3.4/dist packages/mysql/connector/_init__.py”,第179行,在connect中
返回MySQLConnection(*args,**kwargs)
文件“/usr/local/lib/python3.4/dist-packages/mysql/connector/connection.py”,第57行,在__
超级(MySQLConnection,self)。\uuuuu init\uuuu(*args,**kwargs)
TypeError:\uuuu init\uuuuuu()接受1个位置参数,但给出了5个

我不知所措。mysqldb使用的是完全相同的连接,我可以使用PHP或命令行使用相同的凭据进行连接。

您应该提供关键字参数:

dbh=mysql.connector.connect(host=“localhost”,user=“pyuser”,password=“pypwd”,database=“jukebox”)

您应该提供关键字参数:

dbh=mysql.connector.connect(host=“localhost”,user=“pyuser”,password=“pypwd”,database=“jukebox”)

使用此选项并根据您的配置替换值:

import mysql.connector

mydb = mysql.connector.connect(host="localhost",
                               user="yourusername",
                               password="yourpassword")

print(mydb)

使用此选项并根据您的配置替换值:

import mysql.connector

mydb = mysql.connector.connect(host="localhost",
                               user="yourusername",
                               password="yourpassword")

print(mydb)

大的改进-我忽略了命名参数的需要。但是,我现在收到“111连接被拒绝”错误。与我之前使用mysqldb时使用的主机名、用户名和密码完全相同。这个答案对您有帮助吗?是的,就是这样。我的绑定地址是服务器的ip地址(本例中为192.168.1.10)。有趣的是,“localhost”在python中与mysqldb一起工作,但是mysql.connector需要192.168.1.10.Big改进——我忽略了命名参数的需要。但是,我现在收到“111连接被拒绝”错误。与我之前使用mysqldb时使用的主机名、用户名和密码完全相同。这个答案对您有帮助吗?是的,就是这样。我的绑定地址是服务器的ip地址(本例中为192.168.1.10)。有趣的是,“localhost”在python中与mysqldb一起工作,但mysql.connector需要192.168.1.10。