#mysql #python-3.x #xampp
Вопрос:
Я пытаюсь подключиться к базе данных и создать таблицу на основе ввода пользователя, но я получаю эту ошибку: TypeError: __init__() takes 1 positional argument but 6 were given
Вот мой код:
import mysql.connector
def add_tb():
host='localhost'
port='3306'
user='root'
password=''
database =input('type the database name you want to add the table inside of it: ')
mydb = mysql.connector.connect(host, port, user, password, database)
mycursor = mydb.cursor()
tablename=input('what the name of table u want to create ?:')
mycursor.execute(f'create table {tablename} (name varchar (200), kelas int (4))')
add_tb()
Но я получаю эту ошибку:
Traceback (most recent call last):
File "c:UsersNBUSERDocumentsARTOFWARPITON2-pitonALDOBOTbuattabel.py", line 18, in <module>
add_tb()
File "c:UsersNBUSERDocumentsARTOFWARPITON2-pitonALDOBOTbuattabel.py", line 13, in add_tb
mydb = mysql.connector.connect(host, port, user, password, database)
File "C:UsersNBUSERAppDataLocalProgramsPythonPython39libsite-packagesmysqlconnector__init__.py", line 273, in connect
return MySQLConnection(*args, **kwargs)
PS C:UsersNBUSERDocumentsARTOFWARPITON2-piton> amp; C:/Users/NBUSER/AppData/Local/Programs/Python/Python39/python.exe c:/Users/NBUSER/Documents/ARTOFWAR/PITON/02-piton/ALDOBOT/buattabel.py
type database you wanttest123
Traceback (most recent call last):
File "c:UsersNBUSERDocumentsARTOFWARPITON2-pitonALDOBOTbuattabel.py", line 18, in <module>
add_tb()
File "c:UsersNBUSERDocumentsARTOFWARPITON2-pitonALDOBOTbuattabel.py", line 13, in add_tb
mydb = mysql.connector.connect(host, port, user, password, database)
File "C:UsersNBUSERAppDataLocalProgramsPythonPython39libsite-packagesmysqlconnector__init__.py", line 273, in connect
return MySQLConnection(*args, **kwargs)
File "C:UsersNBUSERAppDataLocalProgramsPythonPython39libsite-packagesmysqlconnectorconnection.py", line 72, in __init__
TypeError: __init__() takes 1 positional argument but 6 were given
PS C:UsersNBUSERDocumentsARTOFWARPITON2-piton> amp; C:/Users/NBUSER/AppData/Local/Programs/Python/Python39/python.exe c:/Users/NBUSER/Documents/ARTOFWAR/PITON/02-piton/ALDOBOT/buattabel.py
type the database name you want to add the table inside of it: test123
Traceback (most recent call last):
File "c:UsersNBUSERDocumentsARTOFWARPITON2-pitonALDOBOTbuattabel.py", line 16, in <module>
add_tb()
File "c:UsersNBUSERDocumentsARTOFWARPITON2-pitonALDOBOTbuattabel.py", line 10, in add_tb
mydb = mysql.connector.connect(host, port, user, password, database)
File "C:UsersNBUSERAppDataLocalProgramsPythonPython39libsite-packagesmysqlconnector__init__.py", line 273, in connect
return MySQLConnection(*args, **kwargs)
File "C:UsersNBUSERAppDataLocalProgramsPythonPython39libsite-packagesmysqlconnectorconnection.py", line 72, in __init__
super(MySQLConnection, self).__init__(*args, **kwargs)
TypeError: __init__() takes 1 positional argument but 6 were given
Комментарии:
1. с какой проблемой вы столкнулись?
2. в принципе это разрешено, но сверяет имя базы данных с именем таблицы
3. я уже сообщаю о проблеме, с которой я столкнулся, на самом деле я хочу: когда пользователь пытается создать таблицу в базе данных, но до того, как пользователь сможет это сделать. они должны ввести или указать базовое имя базы данных. вот почему я пытаюсь сделать так, чтобы база данных стала переменным входом.
Ответ №1:
ошибка, которую вы получаете, заключается в том, что mysql.connector.connect()
использует **kwargs
для того, чтобы иметь возможность принимать произвольное количество аргументов ключевого слова («kwargs» означает «аргументы ключевого слова»), поэтому он не принимает аргументы в определенном порядке.
Он должен быть предоставлен в key=value
формате pair.
Вот как вам нужно это использовать:
mydb = mysql.connector.connect(host=host, port=port, user=user, password=password, database=database)
Комментарии:
1. ну, это работа ..!! большое вам спасибо. я получил то, чего хочу достичь.. очень полезно ..!!