Каждый раз проходя по циклу for ваш запрос
UPDATE my_table SET days = (?);
обновляет ВСЕ значения столбца days на ?. И в последней итерации цикла for в весь столбец записывается 112. Чтобы это исправить нужно добавить в SQL запрос
WHERE id = ?
, чтобы изменение применялось только к определенному id. Для реализации этого нужно еще и получать это самое значение id.
Итоговая функция days может выглядеть так:
def days():
sqlite_connection = sqlite3.connect('my_fin.db', detect_types=sqlite3.PARSE_DECLTYPES)
cursor = sqlite_connection.cursor()
sqlite_connection.row_factory = sqlite3.Row
cursor.execute("SELECT id, date FROM my_table")
q = cursor.fetchall()
for qq in q:
date_id = qq[0]
qq=''.join(qq[1])
dt1 = datetime.now()
dt2 = datetime(year=int(qq[0:4]), month=int(qq[4:6]), day=int(qq[6:8]))
dt3 = dt2 - dt1
dt3 = int(dt3.days)
print(dt3)
ds = ('''UPDATE my_table SET days = (?) WHERE id = (?);''')
cursor.execute(ds, (dt3, date_id))
sqlite_connection.commit()