从python将数据插入sql数据库

时间:2014-01-30 14:20:24

标签: python sql sqlite

我在python中有一个表,我想转换为.db格式。 但是,当我在IDLE中运行我的代码时,会使用标题创建表,但不会插入数据。这是我的代码:

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

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()