Python Django错误:不支持从字节到十进制的转换

Python Django错误:不支持从字节到十进制的转换,python,mysql,django,Python,Mysql,Django,所以我有下面的模型 class Stock(models.Model): name = models.CharField(max_length=50) unit_measure = models.CharField(max_length=10) unit_price = models.DecimalField(max_digits=10, decimal_places=2) 当我试图在Django的管理站点中添加该模型的一个实例时,它给出了以下错误 (<class

所以我有下面的模型

class Stock(models.Model):
    name = models.CharField(max_length=50)
    unit_measure = models.CharField(max_length=10)
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)
当我试图在Django的管理站点中添加该模型的一个实例时,它给出了以下错误

(<class 'TypeError'>, TypeError('conversion from bytes to Decimal is not supported',))

Exception Location: /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/PyMySQL-0.5-py3.3.egg/pymysql/connections.py in defaulterrorhandler, line 209
(,TypeError('不支持从字节到十进制的转换',))
异常位置:defaulterrorhandler第209行中的Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/PyMySQL-0.5-py3.3.egg/PyMySQL/connections.py
但是当我使用phpmyadmin查找数据库时,数据成功地插入到表中

我正在使用Django1.5+Python3.3+MySQL5.5+PyMySQL


有人知道这里出了什么问题吗?

11个月后,我希望原始海报找到了解决办法(比切换到python 2更好)

OP没有列出他的db连接字符串,但可能他正在为他的连接使用“use_unicode=0”设置

是的,我最近遇到了相同的类型转换错误。似乎应该可以将字节字符串转换为十进制,也许这在某人的待办事项列表中:),但在此之前,我可以分享解决问题的方法:

当连接到mysql(通过pymysql和python 3.4.1)时,设置charset=utf8属性(假设您需要该属性,您可能应该这样做),但不要设置use_unicode=0属性。我根据当前(0.9)sqlalchemy文档的建议设置了该属性,该文档说它将“快得多”。更快但不好并不是一个改进:(.也许这条建议只针对python2.x用户?考虑到pymysql试图成为Python3.x的热插拔MySqlDB,这有点令人困惑,但python的unicode和字符串处理在2.x和3.x之间发生了变化,所以

在不深入研究pymysql的情况下,我假设在python3中,“use_unicode”意味着返回的字符字段是python本机(unicode)字符串,而不是“byte strings”,内容编码为utf8。设置“use_unicode=0”,得到的是byte strings,从而得到TypeError


Anway,这对我很有用;希望这能帮助其他看到此错误的人。

我在SQLite 3中也遇到了同样的问题,我找到的解决方案在一本书中提到过()


你能发布你的整个模型和
admin.py
吗?我很确定这是出问题的部分。我从我的项目中提取了它,并创建了一个新项目来测试模型,但它仍然会给我相同的错误使用MySQLdb而不是pymysqldb,但它目前不支持python 3。然后使用python 2.7.5Hey Max!请熟悉在写下一篇文章之前,先给自己打个盹儿。祝你在SO逗留愉快:)
def convert_decimal(bytes)
     return decimal.Decimal(bytes.decode())