【问题标题】:TypeError: MySQLConnectionAbstract.__init__() takes 1 positional argument but 2 were given [closed]TypeError:MySQLConnectionAbstract.__init__() 采用 1 个位置参数,但给出了 2 个 [关闭]
【发布时间】:2022-01-05 19:18:27
【问题描述】:

我收到以下错误:

TypeError: MySQLConnectionAbstract.__init__() takes 1 positional argument but 
2 were given

这是我的db.py

import mysql.connector

localhost = "localhost"
username = "Admin"
password = "test123"
db = "testing"
Connect = "host = '{}', user = '{}', password = '{}', db = '{}'".format(localhost, username, password, db)

cnn = mysql.connector.connect(Connect)  # line 16 error
# cnn = mysql.connector.connect(host ="localhost", user = "Admin", password = "test123", db = "testing")

如果我像下面这样编写正确的连接,那么它就起作用了。

cnn = mysql.connector.connect(host ="localhost", user = "Admin", password = "test123", db = "testing"

但是,如果我编写如下代码,它将不起作用:

cnn = mysql.connector.connect(Connect)

这是打印到终端的完整错误:

Traceback (most recent call last):
  File "c:\Users\herok\Documents\MyApp 3\db.py", line 16, in <module>
    cnn = mysql.connector.connect(Connect)
  File "C:\Users\herok\AppData\Local\Programs\Python\Python310\lib\site-packages\mysql\connector\__init__.py", line 273, in connect  
    return MySQLConnection(*args, **kwargs)
  File "C:\Users\herok\AppData\Local\Programs\Python\Python310\lib\site-packages\mysql\connector\connection.py", line 72, in __init__
    super(MySQLConnection, self).__init__(*args, **kwargs)
TypeError: MySQLConnectionAbstract.__init__() takes 1 positional argument but 2 were given

【问题讨论】:

  • connect 函数没有将连接字符串定义为其arguments 之一,因此它不起作用。使用“正确连接”。

标签: python mysql-python mysql-connector mysql-connector-python mysqlconnection


【解决方案1】:

当使用这种方法时

cnn = mysql.connector.connect(Connect)

您将字符串传递给连接函数,但该函数不接受字符串,它应该接收关键字参数,就像您在第二种方法中所做的那样

cnn = mysql.connector.connect(host ="localhost", user = "Admin", password = "test123", db = "testing"

所以如果你需要将连接字符串参数保存在一个变量中,这样你就可以将它传递给连接函数

您可以将数据保存为字典添加如下调用函数时展开字典

connection_string_params = {
"host":"localhost",
"user":"Admin",
"password":"test123",
"db":"testing"
}

cnn = mysql.connector.connect(**connection_string_params)

【讨论】:

    【解决方案2】:

    connect() 方法无法解析连接字符串,这就是引发错误的原因。

    您可以在此处找到完整的参数列表: https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-16
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2018-01-05
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多