Published on

django根据本地数据库建立model及踩坑

Authors
  • avatar
    Name
    Lif
    Twitter

这次要根据数据库建立一个model.py,奈何数据库表比较多,就想从本地数据库迁移直接得到model,还是有方法的.

inspectdb

inspectdb可以对 NAME 配置指向的数据库中的数据库表进行检查,并将一个 Django 模型模块(models.py 文件)输出到标准输出。 语法为:

python manage.py inspectdb > models.py
or
python manage.py inspectdb > yourapp/models.py

执行后,在model.py中就有了数据库里面的表,也可以单表建立model. 然后执行

python manage.py makemigrations

python manage.py migrate

即可完成迁移.

报错

然后完成后,再次启动服务器,却报错了,提示

OSError: [WinError 123] 文件名、目录名或卷标语法不正确。: '<frozen importlib._bootstrap>'

查了一下,找不到问题所在,把app卸载掉就可以重新运行. 经过反复尝试,发现是inspectdb的问题,这个命令会保存一份utf-16的model.py,而我们需要的是utf-8格式的! 然后用记事本另存为的方式把model.py变成utf-8格式,再次run server 成功启动