问题描述
我正在将数据库应用程序从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) '''
使用它并根据您的配置替换值。