Django vs MySQL uuid

时间:2016-02-15 21:20:36

标签: python mysql django uuid

Django noob here

我使用

创建了一个模型
customer_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

将模型迁移到MySQL后,我尝试使用

将数据添加到mysql中
insert into customer_customer (customer_id, ...) values (uuid(), ...)

使用唯一代码在MySQL中正确插入数据,但是,当我尝试通过Django管理工具(此表为用户提供属性)显示时,会抛出格式错误的uuid错误。

File "/usr/lib/python2.7/uuid.py", line 134, in __init__
raise ValueError('badly formed hexadecimal UUID string')
ValueError: badly formed hexadecimal UUID string

请讨论是否有另一种直接在MySQL中创建种子数据的方法。

2 个答案:

答案 0 :(得分:1)

  

用于存储通用唯一标识符的字段。使用Python的UUID   类。在PostgreSQL上使用时,它以uuid数据类型存储,   否则在char(32)。

所以使用MySQL django处理uuid,并将字段作为Char32进行管理。你不能使用原生的MySQL uuid。

如果你必须从MySQL端创建uuid ,请在django模型中使用CharField,并填充它:

afterlogintry()

然后保存:

class MyModel(models.Model):

    fld = models.CharField(max_length=36)

默认:

import uuid
MyModel.fld = str(uuid.uuid4())

答案 1 :(得分:0)

尝试一下:

insert into customer_customer (customer_id, ...) values (Replace(uuid(),'-',''), ...)

然后它将起作用。