1 JavaChen 的 Django ORM 三部曲
JavaChen 的博客 講解了 Django 中與數(shù)據(jù)庫(kù)相關(guān)的一些比較重要的內(nèi)容,當(dāng)然最完整的要看官方文檔,但這系列文章的好處是可以快速查詢到需要的命令或者參數(shù)含義。這三篇文章是遞進(jìn)關(guān)系,首先是 Django 如何與數(shù)據(jù)庫(kù)建立關(guān)系,其次是運(yùn)用 Django 對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪查改,最后是 Django 的數(shù)據(jù)庫(kù)不能滿足需求的情況下,如何調(diào)用原生 SQL 操作。
講解了 Django models 中:
- manage.py 涉及到 models 的命令
- 字段的類型
- 字段的參數(shù)
- Meta 的屬性
- models 的方法
- 模型之間的關(guān)系:外鍵、多對(duì)一、多對(duì)多(不建議)、一對(duì)一
- 模型的繼承(這樣就可以子類去建表,父類不需要再建表)
- 用 Meta 的
db_table
屬性設(shè)置數(shù)據(jù)庫(kù)中的表明
- queryset 對(duì)象的 CRUD 操作
- 使用原生的 SQL 查詢
.objects.raw()
2 kawabangga 的數(shù)據(jù)遷移
Django的數(shù)據(jù)遷移(Data migration)
介紹了如何生成空的 migrations 文件,然后寫入自己想遷移的數(shù)據(jù)。同時(shí),也提到常用的兩種傳統(tǒng)的數(shù)據(jù)庫(kù)復(fù)制操作。
Django 如果做過 makemigrations,在 Django 包所在的位置也會(huì)出現(xiàn)改變,所以在做 makemigrations 前,最好先 git 一次,以便出現(xiàn)問題回滾。
django數(shù)據(jù)庫(kù)migrate失敗的解決方法
介紹了最常用的解決 migrate 失敗的方法,就是刪了重來(lái)。
3 Django 的數(shù)據(jù)庫(kù)導(dǎo)入/導(dǎo)出 dumpdata and loaddata
Django 最傳統(tǒng)的 dumpdata 成 json,然后在新 Django 服務(wù)中 去 loaddata 導(dǎo)入數(shù)據(jù)庫(kù)。
這樣做的問題:1、如果數(shù)據(jù)庫(kù)過大就會(huì)導(dǎo)入不成功。如下文的評(píng)論提到一樣
也會(huì)出現(xiàn):2、導(dǎo)入以后涉及到用戶的關(guān)系等表出現(xiàn)問題。所以這篇作者還是建議直接在 MySQL 里面復(fù)制或者導(dǎo)入/導(dǎo)出數(shù)據(jù)庫(kù)更穩(wěn)定可靠。
另外還有一篇關(guān)于 dumpdata/loaddata 相關(guān)參數(shù)的介紹可看。
8 Useful Django Dumpdata and Loaddata Commands
4 關(guān)于 migrate 的 --fake
參數(shù)
意思是這個(gè)表我以前已經(jīng)建好了,用 South 只是紀(jì)一下這個(gè)創(chuàng)建記錄,下次 migrate 的時(shí)候不必再創(chuàng)建了。
這里 South 是 Django 1.7 及以前的數(shù)據(jù)庫(kù)遷移工具,現(xiàn)在整合進(jìn)了 Djano 的 migrate。
5 Django 非傳統(tǒng)的數(shù)據(jù)庫(kù)復(fù)制與遷移(涉及到的數(shù)據(jù)庫(kù)路由)
以下兩篇文章都涉及到 Django 的數(shù)據(jù)庫(kù)路由。
Migrating Django from MySQL to PostgreSQL the Easy Way 2010
Migrating data between databases
這一篇詳解了 Django 如何與現(xiàn)有的數(shù)據(jù)庫(kù)進(jìn)行整合