Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2019, 16:41   #1
JGalt
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 41
По умолчанию Работа с БД

Всем привет! Который день бьюсь, но ничего не выходит!
Нужно заполнить БД из кортежа

Тут я получаю список:
Код:
def get_item_info(page_num):
        page = str(page_num)
        html_doc = urlopen('https://www.lamoda.ru/c/4153/default-women/?is_sale=1&display_locations=outlet&sitelink=topmenuW&page='+page).read()
        soup = BeautifulSoup(html_doc, 'html.parser')
        soup = soup.find('div', 'products-catalog__list')
        metas = soup.find_all('div', 'products-list-item')
        item_art = []
        for meta in metas:   
            item_art2 = '('+meta.attrs['data-sku']+ ',)'
            item_art.append(item_art2)
        return item_art
Но когда пытаюсь добавить его в БД
Код:
    conn = sqlite3.connect('my.sqlite')
    c = conn.cursor()
    c.execute('''create table if not exists lamoda (data_sku text)''')
    c.executemany("INSERT INTO lamoda VALUES(?)", item_art)

получаю ошибку: Incorrect number of bindings supplied. The current statement uses 1, and there are 15 supplied.
JGalt вне форума Ответить с цитированием
Старый 06.06.2019, 16:47   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы создаете таблицу из ОДНОГО ТЕКСТОВОГО поля, а пытаетесь записать СПИСОК. Ничего не смущает? Собирайте ваш список в строку и пишите. Ну или делайте полностью БД со связями и т.д.
p51x вне форума Ответить с цитированием
Старый 10.06.2019, 11:10   #3
JGalt
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 41
По умолчанию

Возможно я не правильно понимаю, но executemany() должен
Цитата:
Сообщение от p51x Посмотреть сообщение
Вы создаете таблицу из ОДНОГО ТЕКСТОВОГО поля, а пытаетесь записать СПИСОК. Ничего не смущает? Собирайте ваш список в строку и пишите. Ну или делайте полностью БД со связями и т.д.
Как я понимаю, executemany должен создавать много записей, нет? Т.е. поле одно, но записей можно внести много.
JGalt вне форума Ответить с цитированием
Старый 10.06.2019, 11:25   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Но для этого ему нужна коллекция кортежей. Вы же в
Код:
item_art2 = '('+meta.attrs['data-sku']+ ',)'
намутили строки и в итоге получили коллекцию строк.
p51x вне форума Ответить с цитированием
Старый 10.06.2019, 12:36   #5
JGalt
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 41
По умолчанию

Так я и не пойму, как создать коллекцию кортежей
JGalt вне форума Ответить с цитированием
Старый 10.06.2019, 12:38   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так хотя бы скобки из строк сделайте нормальными.
p51x вне форума Ответить с цитированием
Старый 10.06.2019, 16:15   #7
JGalt
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 41
По умолчанию

Все равно не могу разобраться.(
вот этот код работает.
Код:
new_artists = [
    ('A Aagrh!',),
    ('A Aagrh!-2',),
    ('A Aagrh!-3',),
]
cursor.executemany("insert into Artist values (Null, ?);", new_artists)
Но как мне получить такой список кортежей - ума не приложу, что не так
JGalt вне форума Ответить с цитированием
Старый 10.06.2019, 16:17   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

'(' - это строка, ( - это скобка

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну так хотя бы скобки из строк сделайте нормальными.
p51x вне форума Ответить с цитированием
Старый 10.06.2019, 16:27   #9
JGalt
Пользователь
 
Регистрация: 15.05.2013
Сообщений: 41
По умолчанию

Вот меня переклинило!)) Спасибо!
JGalt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лабораторная работа(очень простая) Структуры, работа с файлами yurda Фриланс 2 11.06.2016 08:44
Работа с ems api: корректная работа только при явном указании города mrdemkin JavaScript, Ajax 3 02.03.2015 18:23
Работа с псевдослучайными последовательностями (ПСП). Работа с цветом.(Pascal) Shick Помощь студентам 7 11.12.2013 19:25
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00