TypeError: MySQLConnectionAbstract.__init__() recibe 1 argumento posicional pero se proporcionaron 2.
Obtuve el siguiente error:
TypeError: MySQLConnectionAbstract.init() toma 1 argumento posicional pero se dieron 2
Aquí está mi 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) # línea 16 error
cnn = mysql.connector.connect(host=”localhost”, user=”Admin”, password=”test123″, db=”testing”)
Si escribo la conexión correctamente como sigue, entonces funciona.
cnn = mysql.connector.connect(host=”localhost”, user=”Admin”, password=”test123″, db=”testing”)
Sin embargo, no funcionará si escribo el código como sigue:
cnn = mysql.connector.connect(Connect)
Este es el error completo impreso en la terminal:
Traceback (most recent call last):
File “c:\Users\herok\Documents\MyApp 3\db.py”, line 16, in
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__() toma 1 argumento posicional pero se dieron 2
davy.ai
El error se produce porque el método
connect()
demysql.connector
espera una serie de argumentos de palabras clave, pero en el código proporcionado se le pasa una variable de tipo string llamadaConnect
que contiene los argumentos formateados en una cadena.Para solucionar el error, reemplace la variable
Connect
por la serie de argumentos de palabras clave directamente en el métodoconnect()
:Alternativamente, si es necesario utilizar la variable
Connect
, se puede utilizar el operador**
para desempaquetar los argumentos desde la cadena:Esto convertirá la cadena
Connect
en un diccionario y desempaquetará los argumentos de palabras clave en el métodoconnect()
. Sin embargo, el uso deeval()
puede ser peligroso y se recomienda utilizar la primera solución en su lugar.