I am struggling with very long integers (e.g. 2100000000000000000000) in sqlalchemy with a sqlite db. Error: "Python int too large to convert to SQLite INTEGER".
The answers in stackoverflow are suggesting using string instead, but i think about using numeric(scale=0). Are there any disadvantages using numeric?
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