@bfesiuk

Почему получаю add_advert() got multiple values for argument 'connection'?

Всем доброго времени суток!

Делаю небольшой скрипт для себя с записью в БД. Хочу сделать запись в БД в несколько потоков. Сейчас работает в одном потоке, но получаю данную ошибку:
add_advert() got multiple values for argument 'connection'


В чем может быть проблема?

Исходный код:
def db_connect(func):
    """ decorator to connect to the database
    """
    def inner(*args, **kwargs):
        with sqlite3.connect('adverts.db') as connection:
            kwargs['connection'] = connection
            response = func(*args, **kwargs)
        return response
    return inner


@db_connect
def add_advert(connection, source_link: str, user_since: str, user_name: str, user_link: str, advert_name: str,
                advert_text: str, address: str, phone_num: int, advert_price: float, advert_currency: str):
    """
    add data to db
    :param connection: connector to db
    :param source_link: link to advert
    :param user_since: user registration date
    :param user_name: user name
    :param user_link: link to user profile
    :param advert_name: name of advert
    :param advert_text: description of advert
    :param address: user address
    :param phone_num: user phone number
    :param advert_price: advert price
    :param advert_currency: advert currency
    """
    c = connection.cursor()
    c.execute('INSERT INTO adverts (source_link, user_since, user_name, user_link, advert_name, advert_text\
    address, phone_num, advert_price, advert_currency) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
              (source_link, user_since, user_name, user_link, advert_name, advert_text, address, phone_num,
               advert_price, advert_currency))

    # save editing
    connection.commit()

add_advert(source_link, user_since, user_name, user_link, advert_name, advert_text, address, phone_num,
                    advert_price, advert_currency)
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
@bacon
Сделать print(args, kwargs) и увидеть что там всё в args, а добавление connection в kwargs, как раз и делает multiple values этому аргументу. Ну и сама идея так неявно передавать в функцию connection, так себе.
PS можно так response = func(connection, *args, **kwargs) но всё равно, так себе идея
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
28 сент. 2020, в 00:10
15000 руб./за проект
27 сент. 2020, в 21:54
15000 руб./за проект