为什么mysql.connector.connect失败并出现内部错误?

问题描述

我正在将数据库应用程序从Python 2.7升级到3.4。我最初使用MysqLdb,但尝试切换到mysql-connector。我的数据库连接失败,并出现内部TypeError。这是代码错误

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","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

我很茫然。完全相同的连接适用于MysqLdb,我可以使用PHP或在命令行中使用相同的凭据进行连接。

解决方法

您应提供关键字参数:

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

''' 导入mysql.connector

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

打印(mydb) '''

使用它并根据您的配置替换值。