django1.9 實現模型變更三步走

NO IMAGE

django與資料庫同步,Django_book_2中提到python manage.py syncdb即可。本人下載django版本為1.9.7:

[email protected]:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:38) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 9, 7, 'final', 0)

執行此命令提示沒有次命令:

[email protected]:~/djcode/mysite$ python manage.py syncdb
Unknown command: 'syncdb'
Type 'manage.py help' for usage.

檢視Django中文文件,內容如下:

實現模型變更的三個步驟:
修改你的模型(在models.py檔案中)。
執行python manage.py makemigrations ,為這些修改建立遷移檔案
執行python manage.py migrate ,將這些改變更新到資料庫中。

實測如下:(自建app模組名稱為books,建好model後)

1.生成漂移檔案。

[email protected]:~/djcode/mysite$ python manage.py makemigrations books
Migrations for 'books':
0001_initial.py:
- Create model Author
- Create model Book
- Create model Publisher
- Add field publisher to book

2.同步到資料庫

[email protected]:~/djcode/mysite$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, books, auth, sessions
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying books.0001_initial... OK
Applying sessions.0001_initial... OK

       檢視相應資料庫,發現已將模型同步到資料庫,具體資料庫內容不再贅述。

另注:

        可用一下命令檢視漂移檔案對應的sql指令碼( python manage.py sqlmigrate  app_name 漂移檔案)

python manage.py sqlmigrate books  0001

        其中,sqlmigrate命令並不會在你的資料庫上真正執行遷移檔案——
它只是把Django 認為需要的SQL列印在螢幕上以讓你能夠看到。 這對於檢查Django將要進行的資料庫操作或者你的資料庫管理員需要這些SQL指令碼是非常有用的。