Я продолжаю получать 'DataError: (psycopg2.errors.NumericValueOutOfRange) integer out of range', вызванное 'NumericValueOutOfRange: integer out of range' при попытке добавить записи в локальную базу данных PostgreSQL с использованием SQLAlchemy.
Вот класс, который я объявил для таблицы. (Я также уже пытался, при необходимости, установить столбцы в Integer, BigInteger и Float, но безуспешно.)
class WRP_Global(Base):
__tablename__ = 'wrp_global'
year = Column(Integer, primary_key=True)
chrstprot = Column(Numeric)
chrstcat = Column(Numeric)
chrstorth = Column(Numeric)
chrstang = Column(Numeric)
chrstothr = Column(Numeric)
chrstgen = Column(Numeric)
judorth = Column(Numeric)
jdcons = Column(Numeric)
judref = Column(Numeric)
judothr = Column(Numeric)
judgen = Column(Numeric)
islmsun = Column(Numeric)
islmshi = Column(Numeric)
islmibd = Column(Numeric)
islmnat = Column(Numeric)
islmalw = Column(Numeric)
islmahm = Column(Numeric)
islmothr = Column(Numeric)
islmgen = Column(Numeric)
budmah = Column(Numeric)
budthr = Column(Numeric)
budothr = Column(Numeric)
budgen = Column(Numeric)
zorogen = Column(Numeric)
hindgen = Column(Numeric)
sikhgen = Column(Numeric)
shntgen = Column(Numeric)
bahgen = Column(Numeric)
taogen = Column(Numeric)
jaingen = Column(Numeric)
confgen = Column(Numeric)
syncgen = Column(Numeric)
anmgen = Column(Numeric)
nonrelig = Column(Numeric)
othrgen = Column(Numeric)
sumrelig = Column(Numeric)
pop = Column(Numeric)
worldpop = Column(Numeric)
chrstprotpct = Column(Numeric)
chrstcatpct = Column(Numeric)
chrstorthpct = Column(Numeric)
chrstangpct = Column(Numeric)
chrstothrpct = Column(Numeric)
chrstgenpct = Column(Numeric)
judorthpct = Column(Numeric)
judconspct = Column(Numeric)
judrefpct = Column(Numeric)
judothrpct = Column(Numeric)
judgenpct = Column(Numeric)
islmsunpct = Column(Numeric)
islmshipct = Column(Numeric)
islmibdpct = Column(Numeric)
islmnatpct = Column(Numeric)
islmalwpct = Column(Numeric)
islmahmpct = Column(Numeric)
islmothrpct = Column(Numeric)
islmgenpct = Column(Numeric)
budmahpct = Column(Numeric)
budthrpct = Column(Numeric)
budothrpct = Column(Numeric)
budgenpct = Column(Numeric)
zorogenpct = Column(Numeric)
hindgenpct = Column(Numeric)
sikhgenpct = Column(Numeric)
shntgenpct = Column(Numeric)
bahgenpct = Column(Numeric)
taogenpct = Column(Numeric)
jaingenpct = Column(Numeric)
confgenpct = Column(Numeric)
syncgenpct = Column(Numeric)
anmgenpct = Column(Numeric)
nonreligpct = Column(Numeric)
othrgenpct = Column(Numeric)
sumreligpct = Column(Numeric)
ptctotal = Column(Numeric)
version = Column(Numeric)
Base.metadata.create_all(engine)
Я не получаю ошибок при создании и добавлении записей в сеанс SQLAlchemy, как показано ниже. :
for i in range(len(WRPglobal)):
record = WRP_Global(year = int(WRPglobal['year'][i]),
chrstprot = int(WRPglobal['chrstprot'][i]),
chrstcat = int(WRPglobal['chrstcat'][i]),
chrstorth = int(WRPglobal['chrstorth'][i]),
chrstang = int(WRPglobal['chrstang'][i]),
chrstothr = int(WRPglobal['chrstothr'][i]),
chrstgen = int(WRPglobal['chrstgen'][i]),
judorth = int(WRPglobal['judorth'][i]),
jdcons = int(WRPglobal['jdcons'][i]),
judref = int(WRPglobal['judref'][i]),
judothr = int(WRPglobal['judothr'][i]),
judgen = int(WRPglobal['judgen'][i]),
islmsun = int(WRPglobal['islmsun'][i]),
islmshi = int(WRPglobal['islmshi'][i]),
islmibd = int(WRPglobal['islmibd'][i]),
islmnat = int(WRPglobal['islmnat'][i]),
islmalw = int(WRPglobal['islmalw'][i]),
islmahm = int(WRPglobal['islmahm'][i]),
islmothr = int(WRPglobal['islmothr'][i]),
islmgen = int(WRPglobal['islmgen'][i]),
budmah = int(WRPglobal['budmah'][i]),
budthr = int(WRPglobal['budthr'][i]),
budothr = int(WRPglobal['budothr'][i]),
budgen = int(WRPglobal['budgen'][i]),
zorogen = int(WRPglobal['zorogen'][i]),
hindgen = int(WRPglobal['hindgen'][i]),
sikhgen = int(WRPglobal['sikhgen'][i]),
shntgen = int(WRPglobal['shntgen'][i]),
bahgen = int(WRPglobal['bahgen'][i]),
taogen = int(WRPglobal['taogen'][i]),
jaingen = int(WRPglobal['jaingen'][i]),
confgen = int(WRPglobal['confgen'][i]),
syncgen = int(WRPglobal['syncgen'][i]),
anmgen = int(WRPglobal['anmgen'][i]),
nonrelig = int(WRPglobal['nonrelig'][i]),
othrgen = int(WRPglobal['othrgen'][i]),
sumrelig = int(WRPglobal['sumrelig'][i]),
pop = int(WRPglobal['pop'][i]),
worldpop = int(WRPglobal['worldpop'][i]),
chrstprotpct = float(WRPglobal['chrstprotpct'][i]),
chrstcatpct = float(WRPglobal['chrstcatpct'][i]),
chrstorthpct = float(WRPglobal['chrstorthpct'][i]),
chrstangpct = float(WRPglobal['chrstangpct'][i]),
chrstothrpct = float(WRPglobal['chrstothrpct'][i]),
chrstgenpct = float(WRPglobal['chrstgenpct'][i]),
judorthpct = float(WRPglobal['judorthpct'][i]),
judconspct = float(WRPglobal['judconspct'][i]),
judrefpct = float(WRPglobal['judrefpct'][i]),
judothrpct = float(WRPglobal['judothrpct'][i]),
judgenpct = float(WRPglobal['judgenpct'][i]),
islmsunpct = float(WRPglobal['islmsunpct'][i]),
islmshipct = float(WRPglobal['islmshipct'][i]),
islmibdpct = float(WRPglobal['islmibdpct'][i]),
islmnatpct = float(WRPglobal['islmnatpct'][i]),
islmalwpct = float(WRPglobal['islmalwpct'][i]),
islmahmpct = float(WRPglobal['islmahmpct'][i]),
islmothrpct = float(WRPglobal['islmothrpct'][i]),
islmgenpct = float(WRPglobal['islmgenpct'][i]),
budmahpct = float(WRPglobal['budmahpct'][i]),
budthrpct = float(WRPglobal['budthrpct'][i]),
budothrpct = float(WRPglobal['budothrpct'][i]),
budgenpct = float(WRPglobal['budgenpct'][i]),
zorogenpct = float(WRPglobal['zorogenpct'][i]),
hindgenpct = float(WRPglobal['hindgenpct'][i]),
sikhgenpct = float(WRPglobal['sikhgenpct'][i]),
shntgenpct = float(WRPglobal['shntgenpct'][i]),
bahgenpct = float(WRPglobal['bahgenpct'][i]),
taogenpct = float(WRPglobal['taogenpct'][i]),
jaingenpct = float(WRPglobal['jaingenpct'][i]),
confgenpct = float(WRPglobal['confgenpct'][i]),
syncgenpct = float(WRPglobal['syncgenpct'][i]),
anmgenpct = float(WRPglobal['anmgenpct'][i]),
nonreligpct = float(WRPglobal['nonreligpct'][i]),
othrgenpct = float(WRPglobal['othrgenpct'][i]),
sumreligpct = float(WRPglobal['sumreligpct'][i]),
ptctotal = float(WRPglobal['ptctotal'][i]),
version = float(WRPglobal['version'][i]))
session.add(record)
Однако, когда я запускаю session.commit()
, я получаю следующую трассировку. Значения, которые я пытаюсь добавить в базу данных, указаны внизу.
---------------------------------------------------------------------------
NumericValueOutOfRange Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1245 self.dialect.do_execute(
-> 1246 cursor, statement, parameters, context
1247 )
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/default.py in do_execute(self, cursor, statement, parameters, context)
580 def do_execute(self, cursor, statement, parameters, context=None):
--> 581 cursor.execute(statement, parameters)
582
NumericValueOutOfRange: integer out of range
The above exception was the direct cause of the following exception:
DataError Traceback (most recent call last)
in
----> 1 session.commit()
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py in commit(self)
1034 raise sa_exc.InvalidRequestError("No transaction is begun.")
1035
-> 1036 self.transaction.commit()
1037
1038 def prepare(self):
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py in commit(self)
501 self._assert_active(prepared_ok=True)
502 if self._state is not PREPARED:
--> 503 self._prepare_impl()
504
505 if self._parent is None or self.nested:
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py in _prepare_impl(self)
480 if self.session._is_clean():
481 break
--> 482 self.session.flush()
483 else:
484 raise exc.FlushError(
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py in flush(self, objects)
2477 try:
2478 self._flushing = True
-> 2479 self._flush(objects)
2480 finally:
2481 self._flushing = False
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py in _flush(self, objects)
2615 except:
2616 with util.safe_reraise():
-> 2617 transaction.rollback(_capture_exception=True)
2618
2619 def bulk_save_objects(
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py in __exit__(self, type_, value, traceback)
66 self._exc_info = None # remove potential circular references
67 if not self.warn_only:
---> 68 compat.reraise(exc_type, exc_value, exc_tb)
69 else:
70 if not compat.py3k and self._exc_info and self._exc_info[1]:
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/compat.py in reraise(tp, value, tb, cause)
151 if value.__traceback__ is not tb:
152 raise value.with_traceback(tb)
--> 153 raise value
154
155 def u(s):
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py in _flush(self, objects)
2575 self._warn_on_events = True
2576 try:
-> 2577 flush_context.execute()
2578 finally:
2579 self._warn_on_events = False
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py in execute(self)
420 else:
421 for rec in topological.sort(self.dependencies, postsort_actions):
--> 422 rec.execute(self)
423
424 def finalize_flush_changes(self):
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py in execute(self, uow)
587 self.mapper,
588 uow.states_for_mapper_hierarchy(self.mapper, False, False),
--> 589 uow,
590 )
591
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py in save_obj(base_mapper, states, uowtransaction, single)
243 mapper,
244 table,
--> 245 insert,
246 )
247
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py in _emit_insert_statements(base_mapper, uowtransaction, cached_connections, mapper, table, insert, bookkeeping)
1082 multiparams = [rec[2] for rec in records]
1083
-> 1084 c = cached_connections[connection].execute(statement, multiparams)
1085 if bookkeeping:
1086 for (
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py in execute(self, object_, *multiparams, **params)
980 raise exc.ObjectNotExecutableError(object_)
981 else:
--> 982 return meth(self, multiparams, params)
983
984 def _execute_function(self, func, multiparams, params):
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/sql/elements.py in _execute_on_connection(self, connection, multiparams, params)
285 def _execute_on_connection(self, connection, multiparams, params):
286 if self.supports_execution:
--> 287 return connection._execute_clauseelement(self, multiparams, params)
288 else:
289 raise exc.ObjectNotExecutableError(self)
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py in _execute_clauseelement(self, elem, multiparams, params)
1099 distilled_params,
1100 compiled_sql,
-> 1101 distilled_params,
1102 )
1103 if self._has_events or self.engine._has_events:
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1248 except BaseException as e:
1249 self._handle_dbapi_exception(
-> 1250 e, statement, parameters, cursor, context
1251 )
1252
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py in _handle_dbapi_exception(self, e, statement, parameters, cursor, context)
1474 util.raise_from_cause(newraise, exc_info)
1475 elif should_wrap:
-> 1476 util.raise_from_cause(sqlalchemy_exception, exc_info)
1477 else:
1478 util.reraise(*exc_info)
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/compat.py in raise_from_cause(exception, exc_info)
396 exc_type, exc_value, exc_tb = exc_info
397 cause = exc_value if exc_value is not exception else None
--> 398 reraise(type(exception), exception, tb=exc_tb, cause=cause)
399
400
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/compat.py in reraise(tp, value, tb, cause)
150 value.__cause__ = cause
151 if value.__traceback__ is not tb:
--> 152 raise value.with_traceback(tb)
153 raise value
154
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1244 if not evt_handled:
1245 self.dialect.do_execute(
-> 1246 cursor, statement, parameters, context
1247 )
1248 except BaseException as e:
~/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/default.py in do_execute(self, cursor, statement, parameters, context)
579
580 def do_execute(self, cursor, statement, parameters, context=None):
--> 581 cursor.execute(statement, parameters)
582
583 def do_execute_no_params(self, cursor, statement, context=None):
DataError: (psycopg2.errors.NumericValueOutOfRange) integer out of range
[SQL: INSERT INTO wrp_global (year, chrstprot, chrstcat, chrstorth, chrstang, chrstothr, chrstgen, judorth, jdcons, judref, judothr, judgen, islmsun, islmshi, islmibd, islmnat, islmalw, islmahm, islmothr, islmgen, budmah, budthr, budothr, budgen, zorogen, hindgen, sikhgen, shntgen, bahgen, taogen, jaingen, confgen, syncgen, anmgen, nonrelig, othrgen, sumrelig, pop, worldpop, chrstprotpct, chrstcatpct, chrstorthpct, chrstangpct, chrstothrpct, chrstgenpct, judorthpct, judconspct, judrefpct, judothrpct, judgenpct, islmsunpct, islmshipct, islmibdpct, islmnatpct, islmalwpct, islmahmpct, islmothrpct, islmgenpct, budmahpct, budthrpct, budothrpct, budgenpct, zorogenpct, hindgenpct, sikhgenpct, shntgenpct, bahgenpct, taogenpct, jaingenpct, confgenpct, syncgenpct, anmgenpct, nonreligpct, othrgenpct, sumreligpct, ptctotal, version) VALUES (%(year)s, %(chrstprot)s, %(chrstcat)s, %(chrstorth)s, %(chrstang)s, %(chrstothr)s, %(chrstgen)s, %(judorth)s, %(jdcons)s, %(judref)s, %(judothr)s, %(judgen)s, %(islmsun)s, %(islmshi)s, %(islmibd)s, %(islmnat)s, %(islmalw)s, %(islmahm)s, %(islmothr)s, %(islmgen)s, %(budmah)s, %(budthr)s, %(budothr)s, %(budgen)s, %(zorogen)s, %(hindgen)s, %(sikhgen)s, %(shntgen)s, %(bahgen)s, %(taogen)s, %(jaingen)s, %(confgen)s, %(syncgen)s, %(anmgen)s, %(nonrelig)s, %(othrgen)s, %(sumrelig)s, %(pop)s, %(worldpop)s, %(chrstprotpct)s, %(chrstcatpct)s, %(chrstorthpct)s, %(chrstangpct)s, %(chrstothrpct)s, %(chrstgenpct)s, %(judorthpct)s, %(judconspct)s, %(judrefpct)s, %(judothrpct)s, %(judgenpct)s, %(islmsunpct)s, %(islmshipct)s, %(islmibdpct)s, %(islmnatpct)s, %(islmalwpct)s, %(islmahmpct)s, %(islmothrpct)s, %(islmgenpct)s, %(budmahpct)s, %(budthrpct)s, %(budothrpct)s, %(budgenpct)s, %(zorogenpct)s, %(hindgenpct)s, %(sikhgenpct)s, %(shntgenpct)s, %(bahgenpct)s, %(taogenpct)s, %(jaingenpct)s, %(confgenpct)s, %(syncgenpct)s, %(anmgenpct)s, %(nonreligpct)s, %(othrgenpct)s, %(sumreligpct)s, %(ptctotal)s, %(version)s)]
[parameters: {'year': 1945, 'chrstprot': 160887585, 'chrstcat': 391332035, 'chrstorth': 98501171, 'chrstang': 36955033, 'chrstothr': 13674466, 'chrstgen': 701350290, 'judorth': 856827, 'jdcons': 1426350, 'judref': 1929388, 'judothr': 7796835, 'judgen': 12009400, 'islmsun': 49050320, 'islmshi': 19436742, 'islmibd': 0, 'islmnat': 0, 'islmalw': 0, 'islmahm': 0, 'islmothr': 62273219, 'islmgen': 130760281, 'budmah': 0, 'budthr': 0, 'budothr': 116237936, 'budgen': 116237936, 'zorogen': 12710, 'hindgen': 5389197, 'sikhgen': 20809, 'shntgen': 55228775, 'bahgen': 15495, 'taogen': 120950, 'jaingen': 181, 'confgen': 0, 'syncgen': 428660117, 'anmgen': 33210080, 'nonrelig': 153486530, 'othrgen': 9856926, 'sumrelig': 1636502751, 'pop': 1617000000, 'worldpop': 2250000000, 'chrstprotpct': 0.1001, 'chrstcatpct': 0.2434, 'chrstorthpct': 0.0613, 'chrstangpct': 0.023, 'chrstothrpct': 0.0085, 'chrstgenpct': 0.4362, 'judorthpct': 0.0005, 'judconspct': 0.0009, 'judrefpct': 0.0012, 'judothrpct': 0.0048, 'judgenpct': 0.0075, 'islmsunpct': 0.0305, 'islmshipct': 0.0121, 'islmibdpct': 0.0, 'islmnatpct': 0.0, 'islmalwpct': 0.0, 'islmahmpct': 0.0, 'islmothrpct': 0.0387, 'islmgenpct': 0.0813, 'budmahpct': 0.0, 'budthrpct': 0.0, 'budothrpct': 0.0723, 'budgenpct': 0.0723, 'zorogenpct': 0.0, 'hindgenpct': 0.0034, 'sikhgenpct': 0.0, 'shntgenpct': 0.0343, 'bahgenpct': 0.0, 'taogenpct': 0.0001, 'jaingenpct': 0.0, 'confgenpct': 0.0, 'syncgenpct': 0.2666, 'anmgenpct': 0.0207, 'nonreligpct': 0.0955, 'othrgenpct': 0.0061, 'sumreligpct': 1.012061071, 'ptctotal': 0.718666667, 'version': 1.1}]
(Background on this error at: http://sqlalche.me/e/9h9h)
Любая помощь будет принята с благодарностью!