2013-05-09 170 views
0

我已經建立了一個數據庫,但是當我依次通過我的數據來填充它,我得到以下錯誤:填充sqlite3的Python中環數據庫

OperationalError: no such column: tmp1 

代碼:

with con: 
    cur = con.cursor() 
    cur.execute("CREATE TABLE TESTTABLE(X REAL, Y REAL)") 

for i in xrange(0,5): 
    tmp1 = array[i,0] 
    tmp2 = array[i,1] 
    with con: 
     cur.execute("""INSERT INTO TESTTABLE VALUES(tmp1,tmp2)""") 

基本上我有一個我想轉移到數據庫中的大數組。這可能不是最有效的方法。建議?

回答

2

如果要插入值插入行,你需要通過這些值一起作爲SQL參數爲.execute()電話:

with con: 
    for i in xrange(0,5): 
     tmp1 = array[i, 0] 
     tmp2 = array[i, 1] 
     cur.execute("""INSERT INTO TESTTABLE VALUES(?, ?)""", (tmp1, tmp2)) 

?字符是參數,它們填充,從而,通過值從第二個參數到.execute(),一個元組。上面的代碼將數字0到4插入數據庫中。

SQL代碼中的名稱有與您在Python中定義的名稱相關,值只能顯式傳遞。

+0

那麼,我要更換?與我分配的變量名稱,(X,Y)呢?你可以編輯你的答案,以顯示如何改變cur.execute(「」「INSERT INTO TESTTABLE VALUES(tmp1,tmp2)」「」)。 cur.execute(「」「INSERT INTO TESTTABLE VALUES(?,?)」「」,(tmp1,tmp2))不起作用。 – Griff 2013-05-09 14:31:11

+0

我插入一個數組元素的值,而不是整個數組。 – Griff 2013-05-09 14:36:59

+0

@Griff:你能闡述一下爲什麼我的回答「對你不起作用」?這裏有什麼類型的'tmp1'和'tmp2'?你收到的錯誤是什麼? – 2013-05-09 14:43:51