私が読んだことから、これは一般的なエラーです。タブ区切りのテキスト ファイルを 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,
コンベンションテキスト、サンタクララテキスト、シビックセンターテキスト、メトロテキスト、タスマンテキスト、オールドアイアンサイドテキスト、フェアオークステキスト、ロッキードテキスト、ウィスマンテキスト、マウンテンビューテキスト) """)
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()