こんにちは、私は "リストの範囲外の"エラーが私のsqlite3データベースにデータを挿入しようとしている間にいくつかのヘルプを探しています。Python:sqlite3:リストのインデックスが範囲外にある
これは、クラスヘルパーを使用してデータベースとの間でデータを解析する最初の試みです。そのため、扱いにくいコーディングを笑わないでください。 :))
ここに私のクラスをテストするための私のmain.pyです。
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()
これは、データベースを作成し、テーブルエントリを作成します。 ここに、私のDatabaseHelperクラスの私のinsertIntoメソッドがあります。
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()
「リストのインデックスが範囲外です」というエラーをスローします。
ご協力いただきありがとうございます。
'文字列.__ lenは__()は'良くLEN 'のように書かれています(文字列) 'です。 – Ryan
ええ、Ryanに感謝します。プログラミングの初心者であり、多くの方法であなたのことを頼りにしています。毎日は学校の日です。 :) – Forbidden303