django1.8數據遷移

   django 從1.7版本開始起增長了一個新的數據遷移功能,在以前若是你數據models文件作了修改,若是是已經上線的項目就很是麻煩了,要反覆測試不少次才能在正式庫上修改,操做風險相對比較高,固然在1.6版本前也有第三方的數據遷移工具,例如south,在1.7版本前你們用這個作數據遷移的比較多,但如今從1.7版本開始就自帶數據遷移功能了,由於django1.8是官方永久性支持版本,因此本篇咱們是在1.8環境下的操做,若是還用老版本的兄弟,建議儘快切換新版本,老版本都官方都不在支持了,數據遷移功能對老版本用戶來講,這個功能算是比較新的功能,有想用django1.8開發的朋友,就要了解數據遷移功能如何使用了,咱們今天就來看看如何使用該功能,首先創建咱們的models文件,假設咱們的models.py文件內容以下:python

class Post(models.Model):數據庫

    author = models.ForeignKey(User)django

    title = models.CharField(max_length=150)app

    text = models.TextField()運維

    created_date = models.DateTimeField(blank=True, null=True)ide


這是一個典型的博客文章model,有了這個model,咱們如何讓數據庫也創建相應的表呢,以前的用syncdb,但如今咱們就要用migrate, 另外須要注意的是sysdb這個命令在1.9版本就沒有了。工具

由於我以前已經同步一次數據庫,因此爲了瞭解這個功能的強大,我在models裏增長一條語句,修改以下:post

class Post(models.Model):測試

    author = models.ForeignKey(User)spa

    title = models.CharField(max_length=150)

    text = models.TextField()

    created_date = models.DateTimeField(blank=True, null=True)

    published_date = models.DateTimeField(blank=True, null=True)


首先咱們生成遷移腳本,運行:

python manage.py mkaemigrations

Migrations for 'blog':

  0004_post_published_date.py:

    - Add field published_date to post


運維完後並數據庫並無發生變化,只是生成了要操做數據庫的一些腳本文件,感興趣的能夠去migrations目錄裏查看。

接下來運行:

python manage.py migrate

輸出:

Synchronizing apps without migrations:

  Creating tables...

    Running deferred SQL...

  Installing custom SQL...

Running migrations:

  Rendering model states... DONE

  Applying blog.0004_post_published_date... OK

看到已經將published_date這個字段增長上了,你在數據庫裏會看到這個字段,若是你在運行makemigrations,會獲得:

No changes detected

這代表你作的修改都已同步到數據庫中,沒有可改變的了,這個例子是展現的是增長字段,若是你是第一次運行,原理也是同樣,就更簡單了,因此有了migrate,之後model的的任何改變,例如增長,刪除,修改,都先makemigrations, 而後migrate二步就完成了與數據庫的同步。

相關文章
相關標籤/搜索