В def data_entry(a,b,c,d):
есть локальная переменная c
, которая передается в виде строки и используется как функция execute
, которая в итоге выполняет "test2".execute()
.
Эта проблема должна быть исправлена.И одно исправление - если я явно использую curr
в качестве переменной для представления курсора.
conn=sqlite3.connect('tutorial.db')
curr=conn.cursor()
def create_table(curr):
curr.execute('CREATE TABLE IF NOT EXISTS test (UNIX REAL, datestamp TEXT, keyword TEXT, value REAL)')
#curr is the last argument
def data_entry(a,b,c,d, curr):
curr.execute("INSERT INTO test VALUES ({}, '{}', '{}', {})".format(a,b,c,d))
conn.commit()
curr.close()
conn.close()
#Explicitly passing curr to functions
create_table(curr)
data_entry(1,"test","test2",3, curr)
В будущем убедитесь, что вы называете вашу переменную короткой и описательной, например curr
, и, возможно, строки как val_1
, val_2
и т. Д. Чтобы вы знали из названия, для чего используются переменные.
Это хороший ресурс для именования переменных: PEP-8