2013-05-09 105 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