(可能没有反向映射这个术语,但较好理解,我就这么称呼了。)
1.使用背景:
用Django写项目,要实现十几个表的创建,一个一个在models里写class太麻烦,在网上搜到的命令,可以实现“反向映射”,自动生成models.py文件。
2.具体命令:
python manage.py inspectdb --database databasename tablename1 tablename2 > 路径/models.py
示例为(我用的):
python manage.py inspectdb > bookstore/models.py
其中bookstore是测试该功能新建的应用。
!!!注意,该命令会覆盖你所指定的应用的models.py文件
取巧的办法是像我这样新建一个应用,让“反向映射”生成的models.py覆盖无关紧要的models,然后将需要的class类代码手动复制到需要的地方,在用映射生成对应的数据库表,听起来很麻烦,但是可以保证即便出错也不会有大问题!
3.遇到的问题:
ValueError: source code string cannot contain null bytes
报这个问题有两种可能:utf8、文件名
第一种情况:utf8。检查你指定的models.py是否为utf-8格式,在右下角查看
第二种情况:文件名。我这里的报错就是文件名自定义了,我用了错误的命令为:
python manage.py inspectdb > bookstore/models_from_db_bak.py
更改指定文件名为标准的:models.py后程序运行成功
python manage.py inspectdb > bookstore/models.py
感谢阅读,这是我的第一篇csdn,希望从这里开始成为大佬,嘿嘿。
如果你有疑问,可以联系我的邮箱:FunnyRainn@163.com
我会尽可能的尝试帮你解决。