Вопрос или проблема
Я получил эту ошибку с позиционными аргументами. Вот код, который я скопировал из других источников.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [15], in <cell line: 3>()
1 ############### НАСТРОЙТЕ ЭТО ###################
2 # Открыть соединение с базой данных
----> 3 db = pymysql.connect("localhost","sql8510682","6huzgCC7q3","sql8510682")
TypeError: __init__() принимает 1 позиционный аргумент, но было передано 5
Попробуйте указывать имена аргументов, согласно документации, это должно сработать (конечно, адаптируйте свои значения):
import pymysql
# Соединиться с базой данных
connection = pymysql.connect(host="localhost",
user="user",
password='passwd',
database="db",
charset="utf8mb4",
cursorclass=pymysql.cursors.DictCursor)
Ответ или решение
Ошибка TypeError: __init__() takes 1 positional argument but 5 were given
указывает на то, что вы передали слишком много позиционных аргументов в конструктор класса, который принимает только один. В вашем случае это происходит при попытке установить соединение с базой данных с помощью библиотеки pymysql
.
Судя по вашему коду, проблема возникает из-за того, что вы не указываете параметры соединения корректно. Библиотека pymysql
ожидает параметры соединения в виде именованных аргументов, чтобы избежать путаницы с порядком передачи аргументов.
Вот исправленный код, который должен решить вашу проблему:
import pymysql
# Подключение к базе данных
connection = pymysql.connect(
host="localhost", # Хост базы данных
user="sql8510682", # Имя пользователя
password="6huzgCC7q3", # Пароль
database="sql8510682", # Имя базы данных
charset="utf8mb4", # Кодировка
cursorclass=pymysql.cursors.DictCursor # Класс курсора
)
# Не забудьте закрыть подключение после выполнения операций
try:
with connection.cursor() as cursor:
# Выполнение операций с базой данных
pass # Ваши SQL-запросы здесь
finally:
connection.close() # Закрытие соединения
В этом примере мы используем именованные аргументы для передачи информации о соединении с базой данных. Кроме того, я добавил конструкцию try...finally
, чтобы гарантировать закрытие соединения, что важно для предотвращения утечек ресурсов.
Перед использованием кода убедитесь, что вы заменили значения параметров на свои собственные. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться.