我搜索过Django的文档,但是我无法找到有关向Django的makemigrations
和migrate
命令生成的sql添加注释的任何信息。
有什么方法可以像这样生成sql。因为我的大学坚持认为他可以在不阅读我的代码但使用SHOW CREATE TABLE
语法的情况下知道该字段的含义。
他正在开发另一个只需要从同一个数据库中读取数据的项目。
CREATE TABLE `gateway_order` (
`id` int(11) NOT NULL AUTO_INCREMENT, /* Order id */
`updated_datetime` datetime NOT NULL, /* Latest update time of order */
`created_datetime` datetime NOT NULL, /* Created time of order */
`product_name` varchar(255) NOT NULL,
`description` varchar(255) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=34848 DEFAULT CHARSET=utf8;
答案 0 :(得分:0)
我只是在寻找一种方法在Django中做这样的事情,但发现Django没有并且不会有这个功能:参见:https://code.djangoproject.com/ticket/13867
所以只需使用以下命令输出Django生成的SQL。
python manage.py sqlmigrate app 0001 > app001.sql
然后,编辑app001.sql
为SQL语句添加注释,如下所示:
CREATE TABLE `gateway_order` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT "Order id",
`updated_datetime` datetime NOT NULL COMMENT "Latest update time of order",
`created_datetime` datetime NOT NULL COMMENT "Created time of order",
`product_name` varchar(255) NOT NULL,
`description` varchar(255) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=34848 DEFAULT CHARSET=utf8;
然后将SQL导入数据库。
mysql -h127.0.0.1 -uroot -p --database yourdb < app001.sql
并运行
python manage.py migrate app --fake
告诉Django,你已经在数据库中创建了SQL。
如果找到更好的方法,请告诉我。
答案 1 :(得分:0)
我已经answered in a similar question:
门票#13867现在已被#18468“取代”,{<3>重新打开了,现在被接受并正在等待补丁。
针对PostgreSQL数据库的部分解决方案作为迁移后的钩子Django应用程序发布于https://github.com/vanadium23/django-db-comments。应该不难为MySQL数据库调整它。