【发布时间】:2021-09-25 18:48:33
【问题描述】:
我在使用 sqlite db 的 sqlalchemy 中处理非常长的整数(例如 2100000000000000000000)。错误:“Python int 太大,无法转换为 SQLite INTEGER”。
stackoverflow 中的答案建议改用字符串,但我考虑使用数字(比例=0)。使用数字有什么缺点吗?
from sqlalchemy import create_engine, MetaData, Table, Integer, Column, String, Numeric
meta_sl = MetaData()
engine = create_engine('sqlite:///testint.db')
conn_sl = engine.connect()
example = Table('example', meta_sl,
Column('id', Integer, primary_key=True),
Column('int', Integer),
Column('str', String),
Column('num', Numeric(scale=0)))
meta_sl.create_all(engine)
ins = example.insert()
my_int = 2100000000000000000000
try:
conn_sl.execute(ins, {"id": 2,
"int": my_int, # causes error!
"str": str(my_int), # workaround nr.1
"num": my_int}) # workaround nr.2
except OverflowError:
conn_sl.execute(ins, {"id": 2,
"str": str(my_int), # workaround nr.1
"num": my_int}) # workaround nr.2
【问题讨论】:
标签: python sqlite sqlalchemy integer-overflow