Как я могу добавить столбец в sqlite3 и заполнить его значения pandas Series - PullRequest
0 голосов
/ 07 февраля 2020

Я хотел бы добавить столбец в таблицу, существующую в базе данных sqlite3, используя значения, хранящиеся в pandas Series.

Мой исходный dF DataFrame выглядит так:

   a  b
0  1  2
1  3  4

И это также хранится в виде таблицы в sqlite3. Если я добавлю столбец в df как:

df['c'] = df.a + df.b

, тогда df будет:

   a  b  c
0  1  2  3
1  3  4  7

, тогда как таблица в базе данных sqlite3 еще не изменилась. Что я хочу сделать, это добавить столбец ('c') в таблицу в sqlite3 и заполнить ее значения df ['c'].

Я попробовал:

con = sqlite3.connect('data/a.db')
cur = con.cursor()
cur.execute('alter table temptable add column c integer')
con.commit()
cur.execute('update temptable set c=?', df.c)
con.commit()
con.close()

Однако, это не работает. Есть ли способ выполнить массовое обновление для нового столбца 'c' в sqlite3? Количество рядов обычно составляет около 100 000 000.

1 Ответ

0 голосов
/ 07 февраля 2020

Предполагая, что ALTER TABLE сработал, и вы смогли добавить новый столбец, попробуйте использовать метод sqlite3 executemany , чтобы вставить значения в новый столбец. Принятый ответ на этот вопрос SO показывает, как это сделать (обратите внимание, что вам понадобится первичный ключ на вашем столе)

В качестве альтернативы эта ссылка показывает, как использовать DataFrame.to_ sql для обновления всей таблицы с использованием фрейма данных без написания sql запроса самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...