Здравствуйте. Проясню суть вопроса: при указании в запросе параметра OFFSET, он работает лишь с положительными числами (если OFFSET отрицательный, то sqlite, похоже, вообще его игнорирует). Вот мое костыльное решение:
import sqlite3
def get_data(id, date, limit=1, offset=0):
con = sqlite3.connect('db.db')
cur = con.cursor()
data = []
if offset < 0:
cur.execute('SELECT * FROM db WHERE id == ? AND date >= '
'(SELECT date FROM db WHERE date <= ? '
'ORDER BY _rowid_ DESC LIMIT 1 OFFSET ?) LIMIT ?',
(id, date, -offset, limit))
else:
cur.execute('SELECT * FROM db WHERE id == ? AND date >= ? '
'LIMIT ? OFFSET ?',
(id, date, limit, offset))
for row in cur.fetchall():
data.append({'date': datetime.date.fromisoformat(row[1]),
'name': row[2], 'address': row[3]})
return data