mysql中enum和set类型
https://segmentfault.com/a/1190000019795336
enum类型是将enum内容在内部存储为一个整数(普通整数,1-2个字节),而set类型使用one-hot形式表示某个值(二进制one-hot形式),用位运算实现set操作。
利用django-mysql实现
enum field对应:
- https://django-mysql.readthedocs.io/en/latest/model_fields/enum_field.html
- 其中使用MySQL的ENUM底层存储(uses a MySQL ENUM for storage)
set field对应:
- https://django-mysql.readthedocs.io/en/latest/model_fields/set_fields.html
- 这个是用逗号分隔存储(comma separation),不是mysql的set
其他选项
- 利用django的自定义字段类型 https://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.Field.db_type (利用该内容形成的enum字段见:https://stackoverflow.com/a/19040441 )
- 利用django3自带的enum支持( https://docs.djangoproject.com/en/dev/ref/models/fields/#field-choices-enum-types )