2011-01-11 4 views
2

Entschuldigung, wenn dies überflüssig ist, habe ich viel Zeit damit verbracht, die Antwort zu finden, aber keiner der gelieferten Tricks schien irgendetwas zu tun. Ich versuche, Python zu verwenden, um in SQLite ein CSV-Dokument von Bestandsdaten (Yahoo Finance) zu lesen:SQLite Python Insert - Falsche Anzahl der gelieferten Bindungen

Ticker Open High Low Close Volume AdjClose 
AA  1/5/11 16.34 16.59 16.11 16.56 48278700 16.56 

Ich bin mit der folgenden beglückwünscht:

to_db = [(i['Ticker'], i['Open'], i['High'], i['Low'],i['Close'], i['Volume'], i['AdjClose']) for i in dr] 
c.executemany("insert into stock_test1 (Ticker, Date, Open, High, Low, Close, Volume, AdjClose) values (?, ?, ?, ?, ?, ?, ?, ?);", to_db) 

und ich bekomme:

sqlite3.ProgrammingError: Falsche Anzahl der gelieferten Bindungen. Die aktuelle Anweisung verwendet 8, und es werden 7 bereitgestellt.

Wohin gehe ich hier falsch?

Antwort

4

Nun, da es neu formatiert ist, denke ich, dass das Problem offensichtlich wird.

to_db hat 7 Elemente, nicht 8. Sie versuchen also, acht Bindungen mit nur sieben Argumenten auszufüllen. Nur eine Vermutung, aber vielleicht ist es angeblich

Ticker Date Open High Low Close Volume AdjClose 
AA  1/5/11 16.34 16.59 16.11 16.56 48278700 16.56 

sein, die to_db Änderung wie diese machen würde:

to_db = [(i['Ticker'], i['Date'], i['Open'], i['High'], i['Low'],i['Close'], i['Volume'], i['AdjClose']) for i in dr] 
+0

Thank you so much! Das war extreme Unachtsamkeit meinerseits, sorry dafür, dass du deine Zeit in Anspruch genommen hast und danke nochmals für die Hilfe! – cranberry

+0

kein Problem. Freut mich, einer anderen 'Beere' zu ​​helfen :) – sberry

2

Sie haben eine zu viele ? s. Oder ein zu wenig Elemente im Tupel.

Verwandte Themen