2013-02-24 55 views
0

从我读过这是一个常见的错误 - 我正在阅读一个制表符分隔的文本文件到一个sqlite数据库,而有15列,在一些行,没有数据。例如,这里是我的文本文件的块我读:错误与sqlite和python-提供的绑定数量不正确

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

我只是在实际时间阅读。问题是,例如,不是每一个栏完全充满的时间,这就是为什么我得到

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses >15, and there are 8 supplied.

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

这里是我的代码

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, 

公约文本,Santa_Clara TEXT,Civic_Center TEXT,地铁TEXT,塔斯曼TEXT,Old_Ironsides TEXT,Fair_Oaks TEXT,洛克希德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() 

回答

0

您还没有指定什么“处理”的意思,但假设你想插入NULL值到缺少的字段,你只需要它们添加到t,直到你有足够的值:

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