-
Django设置好数据
数据库中应该有对应的表 -
执行命令
命令:python manage.py inspectdb > [app]/models.py -
生成同步文件
python manage.py makemigrations [app]; -
跳过创建数据库阶段
因为此时数据库中已经有数据了,所以应该跳过初始化阶段
python manage.py migrate [app] --fake -
删除0001_initial.py中的id字段添加
因为跳过了创建数据库阶段,因此不能在跳过之前就添加主键,否则会造成第二次没有变动,无法makemigrations -
手动修改
详情见生成的文件顶部的说明
--1. 可以对model进行排序
--2. 确保每一个model都有一个primary_key
--3. 确保关联的 外键有 on_delete
--4. 删除 ’managed = True' 才能够直接使用
--5. 可以改models的名字,但不能改字段和db_table
--6. 非自增id做组件,需要添加默认值 default
7.生成迁移文件
python manage.py makemigrations [app]
8.迁移文件
python manage.py migrate app
9.完成
记一下坑:使用pandas.to_sql 默认存储的字符串字段统一为 TextField 类型(该字段不能作为mysql的主键)
解决办法:
1. 存储前使用 dtype={'code':VARCHAR(length=6)} 来指定字段数据类型
2. 存储后解决,将TextField 改为 CharField
坑2: django-model不支持双主键,需要在mysql另外添加主键(此步骤应该放在首次migrate之前使用):
table base_dictmark
add dict_id int not null primary key Auto_increment first;
网友评论