2014-01-30 5 views
-1

파이썬에서 테이블을 .db 형식으로 변환하고 싶습니다. 그러나 IDLE에서 코드를 실행하면 헤드 라인이있는 테이블이 만들어 지지만 데이터는 삽입되지 않습니다. 이건 내 코드입니다 :파이썬에서 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

:

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

또한 에 필요가 거래를 위탁하지 않습니다. 이 코드는 모두 * 귀하의 코드입니까? –

답변

1

귀하의 코드가 insertData()를 호출하지 않고, 함수는 지나치게 장황. 마지막으로 중요한 것은 트랜잭션을 커밋하지 않는 것입니다.

c.executemany()을 사용하여 전체 구조를 한 번에 삽입하십시오. 인덱스 필요 각 열 : 당신은 * 중 * 여기에 중 함수를 호출하지 않는

conn.commit() 
+2

나는'commit()'이 여기에있는 열쇠라고 생각한다. –

관련 문제