2014-01-14 46 views
0

我是Python的SQLite新手,我對如何在遍歷表時更新行感到困惑。如何在迭代表格時更新python SQLite行

下面是一些示例代碼:

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] 

我想知道如何使用UPDATE命令插入row_sum爲第四列。當我定義表格時,是否必須定義第四個「列」?

+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

感謝你。如果列已經被定義,那麼我怎樣才能更新該行的一個元素?我不想更新所有行。有沒有可以使用的內置行ID? – HotDogCannon

+1

不,你應該爲此定義一個主鍵列(然後在update語句中添加'WHERE id = my_id_number')。說實話,這是所有真正基本的SQL工具(並且與Python無關):你應該去做一個介紹性的SQL教程。 –