import sqlite3
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute('CREATE TABLE "test_table" (number INTEGER)')
c.execute('INSERT INTO test_table (number) VALUES (?)', (9223372036854775807,)) # the max integer size sqlite3 supports'
# this works
c.execute("SELECT * FROM test_table")
print(c.fetchall())
# this does not. OverflowError: Python int too large to convert to SQLite INTEGER
c.execute('INSERT INTO test_table (number) VALUES (?)', (int(f'1{"0" * 100}'),))
Я столкнулся с ограничением с sqlite3. Мне нужно иметь возможность хранить безумно длинные номера. Дольше, чем предел sqlite3 в 9223372036854775807. Решение, которое я задумал, было вместо хранения целого числа, я сохраняю строку, которая является строковой формой переданного целого числа python, а затем int()
возвращается при запросе. Однако я не могу выбрать с помощью ORDER BY. В противном случае он упорядочивается в алфавитном порядке, а не в ожидаемом порядке. Есть ли решение для хранения больших целых чисел или SELECT с ORDER BY без запроса всей базы данных вручную?