sqlite和python出错 - 提供的绑定数量不正确

时间:2013-02-24 04:54:33

标签: python sqlite

从我读到的这是一个常见错误 - 我正在将制表符分隔的文本文件读入sqlite数据库,虽然有15列,但在某些行中,没有数据。例如,这是我正在阅读的文本文件的一大块:

http://www.vta.org/schedules/tdl/SC_902NO_WK.tdl

我只是在实际时间阅读。问题是,例如,并非每个列都被时间完全填满,这就是我得到

的原因
  

sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用> 15,并且提供了8个。

如何处理文本文件中的空值?

这是我的代码

import sqlite3 as lite
import sys
import csv
con = lite.connect('vta.db')

with con:

cur = con.cursor()
cur.execute('DROP TABLE IF EXISTS NB_902_Wkdy')
cur.execute("""CREATE TABLE NB_902_Wkdy ( Train_Num INT primary key, Winchester TEXT,            Bascom TEXT, Fruitdale TEXT, Diridon TEXT, 

Convention TEXT,Santa_Clara TEXT,Civic_Center TEXT,Metro TEXT,Tasman TEXT,Old_Ironsides TEXT,Fair_Oaks TEXT,Lockheed TEXT,Whisman TEXT,Mountain_View TEXT)“”“

creader = csv.reader(open('NB_902_Wkdy', 'rb'), delimiter='\t')#, quotechar='|')
for t in creader:
     cur.execute('INSERT INTO NB_902_Wkdy VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', t)

creader.close()

1 个答案:

答案 0 :(得分:0)

您尚未指定“处理”的含义,但假设您要将NULL值插入缺少的字段,则只需将它们附加到t,直到您有足够的值为止:

for t in creader:
    while len(t) < 15:
        t += (None,)
    cur.execute(..., t)