当我对一些模型进行更改时,我希望查看 django 将要运行的 SQL,以便在 DB 上实现这些更改。
通常的做法是做“ makhemations appname”。这将生成一个迁移,比方说-’0001 _ some Name.py’。然后可以执行‘ sqlshift 0001 _ some Name.py’
但是我想直接查看 sql,而不必创建中间迁移?
Django 不提供这个选项。您总是可以创建迁移、运行 sqlmigrate和删除迁移文件。只要它不应用于 migrate,什么都不会发生。
sqlmigrate
migrate
快跑
python manage.py sql <appname>
——打印给定应用程序名称的 CREATE TABLE SQL 语句。
python manage.py sqlall <appname>
——打印给定应用程序名称的 CREATE TABLE 和初始数据 SQL 语句。
你可以在这里找到详细的文档。 Https://docs.djangoproject.com/en/1.8/ref/django-admin/
使用来自 manage.py的 sqlmigrate命令。
manage.py
python manage.py sqlmigrate <appname> <migration number eg. 0001 or 0004>
将显示应用程序特定迁移的 SQL 语句。
这些现有的答案是不够的,因为我发现试图跟随他们。首先检测并为你的应用程序制作迁移脚本:
manage.py makemigrations app
记下文件名开头的四位数字迁移号,然后用以下方式打印 SQL:
manage.py sqlmigrate app 0002 # <-- number here
完成后,在文件运行或提交之前删除它:
rm api/migrations/0002_auto_8675309.py