ValueError: 无法将'01234SS'转换为十进制整数

-1 投票
1 回答
1318 浏览
提问于 2025-04-17 06:30

我想知道,为什么我会收到“invalid literal for int() with base 10 error”的错误,但在交互模式下却运行得很好?

fees = {u'nid':u'179', u'type':u'fees',  u'jamb_no': u'01234SS'}
    for fee in fees:
      # Transaction model
      try:
        txn = Transaction()
        txn.nid = int(fee.get(u'nid'))
        txn.type = options.get(u'type')
        txn.jamb_no = fee.get(u'jamb_no') # invalid literal for int() with base 10
        txn.save()

Models.py

class Transaction(models.Model):
    id = models.AutoField(primary_key=True)
    type = models.CharField(max_length=50)
    nid = models.IntegerField()
    jamb_no = models.CharField(max_length=20, blank=False)

错误追踪信息:

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\celery-2.3.2-py2.7.egg\celery\execute\trace.py"
, line 36, in trace
    return cls(states.SUCCESS, retval=fun(*args, **kwargs))
  File "C:\Python27\lib\site-packages\celery-2.3.2-py2.7.egg\celery\app\task\__init__
.py", line 232, in __call__
    return self.run(*args, **kwargs)
  File "C:\Python27\lib\site-packages\celery-2.3.2-py2.7.egg\celery\app\__init__.py",
 line 172, in run
    return fun(*args, **kwargs)
  File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\db\transaction.py",
 line 217, in inner
    res = func(*args, **kwargs)
  File "api\tasks.py", line 142, in queue_transaction
ValueError: invalid literal for int() with base 10: '01234SS'

在交互提示符下,这个运行得很好。

>>> fees = {u'jamb_no': u'01234SS'}
>>> fees.get(u'jamb_no')
u'01234SS'
>>>

>>> jamb_no = u'01234SS'
>>> str(jamb_no)
'01234SS'

请帮帮我。我已经为这个问题纠结了两天了。

1 个回答

0

这个问题和celery有关。当我对tasks.py文件做了修改后,celery需要重新启动。但是我没有重新启动,这就导致即使状态已经改变,还是会出现重复的错误信息。

撰写回答