Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 25, 2009 13:39:09

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

executemany()

import sqlite3

conn = sqlite3.connect(':memory:')
conn.execute('create table test (number int)')
conn.commit()

c = conn.cursor()

c.executemany('insert into test(number) values (?)', xrange(100))
conn.commit()

conn.close()
Получаю
c.executemany('insert into test(number) values (?)', xrange(100))
ValueError: parameters are of unsupported type

Что тут неправильно?



Отредактировано (Окт. 25, 2009 14:34:49)

Офлайн

#2 Окт. 25, 2009 14:41:59

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

executemany()

xrange, это не контейнер, а генератор. Используй range.

Добавлено:

Затупил…
Ему нужен итератор или гетератор туплов. Вот:

c.executemany('insert into test(number) values (?)', ((i, ) for i in xrange(100)))



Отредактировано (Окт. 25, 2009 14:48:57)

Офлайн

#3 Окт. 25, 2009 15:20:11

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

executemany()

ZZZ
c.executemany('insert into test(number) values (?)', ((i, ) for i in xrange(100)))
Работает, спасибо. Гораздо быстрее получается, чем execute() в цикле.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version