簡體   English   中英

如何在 python sqlite3 中存儲超長整數?

[英]How do I store extremely long integers in python sqlite3?

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 長。我想到的一個bandaid 解決方案是存儲一個字符串,而不是存儲一個整數,它是python 整數的字符串形式,然后在查詢時返回int() 但是我無法使用 ORDER BY 進行 SELECT。 否則,它按字母順序排列,而不是按預期的數字順序排列。 是否有解決方案可以在不手動查詢整個數據庫的情況下存儲更大的整數或使用 ORDER BY 進行 SELECT?

如果您將整數填充為零以使其具有相同的寬度(例如,如果您知道這是最大寬度,則為 100 位),則字母順序將與數字順序匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM