я вношу в поле date дату в формате YYYYMMDD далее с помощью datetime вычислю разницу в днях, и хочу записать эту разницу в днях в столбец days, но во все строки записывается только одно значение. Например в базе две строки с датой, разница выводится следующая
, но в обе строки в колонке days записывается 112, а не 57 в первую и 112 во вторую. Как сделать, чтобы в каждую строку записывалось свое значение?
import sys, sqlite3, os, time
from datetime import datetime
# Создание базы
try:
sqlite_connection = sqlite3.connect('my_fin.db')
create_table = '''CREATE TABLE IF NOT EXISTS my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name TEXT,
summ INTEGER,
date TEXT,
percent INTEGER,
summ_percent INTEGER GENERATED ALWAYS AS ((summ*percent)/100) VIRTUAL,
days INTEGER,
con_summ INTEGER GENERATED ALWAYS AS (summ + summ_percent) VIRTUAL);'''
cursor = sqlite_connection.cursor()
cursor.execute(create_table)
sqlite_connection.commit()
cursor.close()
except sqlite3.Error as error:
print("Ошибка при подключении к sqlite", error)
finally:
if (sqlite_connection):
print("Подключение к базе успешно")
sqlite_connection.close()
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 date FROM my_table")
q = cursor.fetchall()
for qq in q:
qq=''.join(qq)
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 = (?);''')
cursor.execute(ds, (dt3,))
sqlite_connection.commit()