TypeError: __init__() принимает 1 позиционный аргумент, но было передано 5.

Вопрос или проблема

Я получил эту ошибку с позиционными аргументами. Вот код, который я скопировал из других источников.

---------------------------------------------------------------------------
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, чтобы гарантировать закрытие соединения, что важно для предотвращения утечек ресурсов.

Перед использованием кода убедитесь, что вы заменили значения параметров на свои собственные. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...