Hallo, ich bin auf der Suche nach Hilfe mit einem "Listenindex außerhalb des Bereichs" -Fehlers, den ich erhalte, während ich versuche, Daten in meine sqlite3-Datenbank einzufügen.Python: sqlite3: Listenindex außerhalb des Bereichs
Dies ist mein erster Versuch, einen Klassenhelfer zu verwenden, um Daten zu und von meiner Datenbank zu analysieren, also lache bitte nicht über meine unhandliche Kodierung. :))
hier ist mein main.py zum Testen meiner Klasse.
import kivy
kivy.require('1.9.1')
from databaseHelper import DatabaseHelper
from kivy.app import App
from kivy.uix.widget import Widget
class Window1(Widget):
pass
class MyApp(App):
def build(self):
db = DatabaseHelper()
db.createDatabase('myDatabase')
columnData = ['unix', 'value', 'datestamp', 'keyword']
data = [57489543789, 2096, "12-12-12", "hello data"]
db.createTable(db.name, "datatable", columnData)
db.insertInto(db.name, "datatable", columnData, data)
return Window1()
if __name__ == '__main__':
MyApp().run()
Erstellt die Datenbank und erstellt die Tabelleneinträge. Hier ist meine insertInto-Methode aus meiner DatabaseHelper-Klasse.
def insertInto(self, db_name, table_name, column_data, data):
self.db_name = db_name
self.table_name = table_name
self.column_data = column_data
self.data = data
try:
conn = sqlite3.connect(self.db_name)
c = conn.cursor()
dataString = ''
string = ''
values = ''
for i in data:
string += column_data[i] + ", "
values += '?, '
dataString += 'self.data' + '[' + str(i) + ']' + ', '
string = string[0:string.__len__() - 2]
values = values[0:values.__len__() - 2]
dataString = dataString[0:dataString.__len__() - 2]
c.execute("INSERT INTO " + self.table_name + " (" + string + ")" + " VALUES " + "(" + values + ")",
"(" + dataString + ")"
)
conn.commit()
print("Succesfully input data into database: " + self.db_name + " Table: " + self.table_name)
except Exception as e:
print("Failed to input data into database: " + self.db_name + " Table: " + self.table_name)
print(e)
finally:
c.close()
conn.close()
, die eine "List Index out of range" Fehler auslöst.
Jede Hilfe wäre sehr geschätzt, danke.
'String .__ len __()' besser geschrieben als 'len (Zeichenfolge) '. – Ryan
Ja, danke Ryan. Irgendwie neu in der Programmierung und ich vertraue auf YouCompleteme für viele Methoden.Jeder Tag ist ein Schultag. :) – Forbidden303