Вставка списка значений в столбец SQLite из python - PullRequest
0 голосов
/ 20 октября 2019

Допустим, у меня есть список следующих значений:

listA = [1,2,3,4,5,6,7,8,9,10]

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

Я знаю, как это сделать, если мне нужно вставить несколько столбцов данных. Например, если бы мне пришлось вставить listA, listB, listC, я мог бы создать кортеж типа (listA[i],listB[i],listC[i]). Можно ли вставить один список значений без цикла. Также предположим, что значения вставки являются целыми числами.

ОБНОВЛЕНИЕ: На основании предоставленного ответа я попробовал следующий код:

def excutemanySQLCodewithTask(sqlcommand,task,databasefilename):
    # create a database connection
    conn = create_connection(databasefilename)
    with conn:
        cur = conn.cursor()
        cur.executemany(sqlcommand,[(i,) for i in task])
        return cur.lastrowid

tempStorage = [19750328, 19750330, 19750401, 19750402, 19750404, 19750406, 19751024, 19751025, 19751028, 19751030]

excutemanySQLCodewithTask("""UPDATE myTable SET formatteddate = (?) ;""",tempStorage,databasefilename)

Это все еще занимает слишком много времени (примерно 10 часов). У меня 150 000 предметов в TempStorage. Я попробовал INSERT INTO, и это тоже было медленно. Кажется, что невозможно составить список кортежей целых чисел.

1 Ответ

1 голос
/ 20 октября 2019

Как вы говорите, вам нужен список кортежей. Так что вы можете сделать:

cursor.executemany("INSERT INTO my_table VALUES (?)", [(a,) for a in listA])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...