首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:“decimal.Decimal”对象没有“”decode“”属性“”

AttributeError:“decimal.Decimal”对象没有“”decode“”属性“”
EN

Stack Overflow用户
提问于 2018-10-13 12:05:58
回答 1查看 3.9K关注 0票数 3

我很难弄清楚为什么我会得到这个错误。我有一个名为Driver的模型,代码如下:

代码语言:javascript
复制
class Driver(models.Model):
userId = models.IntegerField(unique=True)
status = models.IntegerField(default=-1)
currentLatitude = models.DecimalField(max_digits=11, decimal_places=8, default=0)
currentLongitude = models.DecimalField(max_digits=11, decimal_places=8, default=0)

我正试图在我的tests.py文件中测试这个模型,并且在我的setUpTestData(cls)方法中创建了一个这样的驱动程序实例。

Driver.objects.create(userId=3, status=0, currentLatitude=37.717, currentLongitude=100)

我刚刚为lat/long设置了假的虚拟值,我想测试一下这个实例是否真的有37.717的currentLatitude和100的currentLongitude。

以下是我的一个测试:

代码语言:javascript
复制
    def testDriverLatitude(self):
        driver = Driver.objects.get(id=3)
        expected_latitude = driver.currentLatitude
        self.assertEquals(expected_latitude, 37.717)

当我运行测试时,在driver = Driver.objects.get(id=1)上得到一个错误

这是我得到的错误,AttributeError: 'decimal.Decimal' object has no attribute 'decode'

这是完整的跟踪堆栈

代码语言:javascript
复制
Traceback (most recent call last):
File "\server\backend\tests.py", line 51, in 
testDriverLatitude
driver = Driver.objects.get(id=3)
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\models\query.py", line 393, in get
num = len(clone)
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\models\query.py", line 250, in __len__
self._fetch_all()
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\models\query.py", line 1186, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\models\query.py", line 63, in __iter__
for row in compiler.results_iter(results):
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\models\sql\compiler.py", line 1466, in cursor_iter
for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\models\sql\compiler.py", line 1466, in <lambda>
for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\django\db\utils.py", line 96, in inner
return func(*args, **kwargs)
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\mysql\connector\cursor_cext.py", line 510, in fetchmany
rows.extend(self._cnx.get_rows(size)[0])
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\mysql\connector\connection_cext.py", line 280, in get_rows
row[i])
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\mysql\connector\conversion.py", line 205, in to_python
return self._cache_field_types[vtype[1]](value, vtype)
File "C:\Users\Andy\.virtualenvs\CS160-wrkGRq_z\lib\site- 
packages\mysql\connector\conversion.py", line 446, in _DECIMAL_to_python
val = value.decode(self.charset)
AttributeError: 'decimal.Decimal' object has no attribute 'decode'

我试着在网上寻找答案,但似乎找不到解决方案。

如有任何帮助或建议,我们将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-11-12 22:49:25

在使用最新版本的mysql-connector-python时,我也遇到了同样的问题。请尝试使用8.0.5版。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52789427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档