0

I'm interested to know if I can change the DB while the loop is running that takes data from the database every 10 seconds? The library is aiosqlite.

The code of the loop:

    db = await aiosqlite.connect("/main.db")
    while True:
        await asyncio.sleep(10.5)
        ti = await db.execute_fetchall("SELECT delete_time FROM auction WHERE id = ?", (id,))
        print("from db check", ti[0][0])
        if float(ti[0][0]) > dt.now().timestamp():
            continue
        else:
            return True

Change code:

    db = await aiosqlite.connect("/main.db")

    timing = await db.execute_fetchall("SELECT delete_time FROM auction WHERE id = ?", (id,))
    print("from db", timing[0][0])

    timing = float(timing[0][0]) + 60
    print("edited", timing)

    await db.execute("UPDATE auction SET delete_time = ? WHERE id = ?", (timing, id,))
    await db.close()

There seem to be no errors, but nothing changes in the DB (the DB changes when I write a command).

Deprool
  • 75
  • 8

1 Answers1

0

You're missing a await db.commit() if you want to persist the changes.

    db = await aiosqlite.connect("/main.db")

    timing = await db.execute_fetchall("SELECT delete_time FROM auction WHERE id = ?", (id,))
    print("from db", timing[0][0])

    timing = float(timing[0][0]) + 60
    print("edited", timing)

    await db.execute("UPDATE auction SET delete_time = ? WHERE id = ?", (timing, id,))
    await db.commit()  # persist changes
    await db.close()
ljmc
  • 4,830
  • 2
  • 7
  • 26