2014-01-30 23 views
-1

我有一個python中的表,我想轉換爲.db格式。 但是,當我在IDLE中運行我的代碼時,該表是使用標題創建的,但未插入數據。這是我的代碼:從python插入數據到sql數據庫

import sqlite3 

conn = sqlite3.connect('test.db') 

c = conn.cursor() 

kampData = [ 
(1,12,'','','Everton','Liverpool',2.9,3.3,2.63,0,0), 
(2,12,'','','Fulham','Swansea City',3.4,3.4,2.3,0,0), 
(3,12,'','','Hull City','Crystal Palace',1.91,3.5,4.75,0,0) 
] 

def tableCreate():  
    c.execute("CREATE TABLE TABLE(ID INT, Round INT, Date TEXT, Time TEXT, Home TEXT, Away TEXT, O1 REAL, OX REAL, O2 REAL, ScoreHome INT, ScoreAway INT)") 

def insertData(): 
    i = 0 
    while i < len(kampData): 
     c.execute("INSERT INTO TEST1 (ID, Round, Date, Time, Home, Away, O1, OX, O2, ScoreHome, ScoreAway) VALUES (?,?,?,?,?,?,?,?,?,?,?)", 
       (kampData[i][0],kampData[i][1],kampData[i][2],kampData[i][3],kampData[i][4],kampData[i][5],kampData[i][6],kampData[i][7],kampData[i][8],kampData[i][9],kampData[i][10],)) 
    i = i + 1 
+0

你是不是* *調用此函數要麼要麼。這是*所有*你的代碼? –

回答

1

您的代碼不調用insertData(),而且功能過於冗長。最後但並非最不重要的是,您似乎沒有提交交易。使用c.executemany()可以一次插入整個結構;無需索引的每一列:

def insertData(): 
    c.executemany("INSERT INTO TEST1 (ID, Round, Date, Time, Home, Away, O1, OX, O2, ScoreHome, ScoreAway) VALUES (?,?,?,?,?,?,?,?,?,?,?)", 
       kampData) 

您還需要提交交易:

conn.commit() 
+2

我敢打賭'commit()'是這裏的關鍵。 –