2014-01-14 3 views
0

Я новичок в SQLite для python, и я смущен тем, как обновлять строку при повторении через таблицу.Как обновить строки SQLite python во время итерации через таблицу

Вот некоторые примеры кода:

import sqlite3 as lite 

points = [ 
    (1,2,3), 
    (4,5,6), 
    (7,8,9), 
    (10,11,12) 
] 

point_data = lite.connect('points.db') 
cur = point_data.cursor() 

cur.execute("DROP TABLE IF EXISTS points") 
cur.execute("CREATE TABLE points(x1,y1,z1)") 
cur.executemany("INSERT INTO points VALUES(?, ?, ?)", points) 

cur.execute("SELECT * FROM points") 

while True: 
    row = cur.fetchone() 
    if row == None: 
     break 
    row_sum = row[0]+row[1]+row[2] 

Я хотел бы знать, как вставить row_sum в качестве четвертого столбца, используя UPDATE команду. Должен ли я определять четвертый столбец, когда я определяю таблицу?

+2

Да. Вы также можете добавить столбец позже с запросом, но если вы уверены, что вам нужно 4 столбца, просто определите все столбцы при создании таблицы. Я не уверен, понимаю ли я ваш вопрос ... это так странно .. – maurelio79

ответ

3

Да, но вы не сделали бы этого в Python.

Базы данных SQL имеют фиксированную структуру, вам нужно будет создать полный столбец в инструкции CREATE TABLE или добавить его через инструкцию UPDATE TABLE ... ADD COLUMN.

Но затем, вместо SELECT, а затем UPDATE, вы можете просто сделать один UPDATE:

UPDATE points SET total = (x1 + y1 + z1); 

Заметим, однако, что вы не можете на самом деле нужно хранить в общей сложности в БД вообще: вы могли бы просто вычислить его динамически точно так же, как вы делаете SELECT:

SELECT x1, y1, z1, x1+y1+z1 as total FROM points; 
+0

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

+1

Нет, вы должны определить для него столбец первичного ключа (а затем добавить 'WHERE id = my_id_number' в оператор обновления). Честно говоря, это все действительно базовый материал SQL (и вообще ничего общего с Python): вы должны пойти и сделать вводный учебник по SQL. –

Смежные вопросы