Всем доброго времени суток! Встретился с неожиданной для себя проблемой при использовании БД SQlite3
Вот собственно проблемный участок:
# Считываем строку
counter=0
for col in columns:
print("counter = "+str(counter))
print("col = "+col)
tmp=f.readline()
print("tmp = "+tmp)
with con:
cur = con.cursor()
cur.execute("UPDATE "+table+" SET "+col+"="+tmp+" WHERE id="+str(iteration))
counter=counter+1
Данным кодом пользовался в аналогичном приложении, вывод из консоли меня удивил:
iteration = 1
Создаем строку
counter = 0
col = engine
tmp = CFM71S
Traceback (most recent call last):
File "fill_db_engine.py", line 40, in <module>
cur.execute("UPDATE "+table+" SET "+col+"="+tmp+" WHERE id="+str(iteration))
sqlite3.OperationalError: no such column: CFM71S
Объясните мне дураку, почему пытаясь обновить значение в колонке engine он ищет колонку CFM71S. Для эксперимента менял "+col+"="+tmp+" на "+tmp+"="+col+" при котором как раз и должна срабатывать ошибка, при том она срабатывает.

С чем может быть связан этот глюк?
Если это не глюк, то где меня проглючило? (ткните носом)
Ошибку, обошел за счет проверки, является эта колонка, колонкой для текста или же для цифр.
for col in columns:
print("counter = "+str(counter))
print("col = "+col)
tmp=f.readline()
print("tmp = "+tmp)
if(col=="engine"):
query="UPDATE "+table+" SET "+col+"='"+tmp+"' WHERE id="+str(iteration)
else:
query="UPDATE "+table+" SET "+col+"="+tmp+" WHERE id="+str(iteration)
print("query = "+query)
with con:
cur = con.cursor()
cur.execute(query)
counter=counter+1
Как я понял ошибка была только в отсутствии кавычек или апострофов. Надеюсь правильно понял.