1 JavaChen 的 Django ORM 三部曲
JavaChen 的博客 講解了 Django 中與數(shù)據(jù)庫(kù)相關(guān)的一些比較重要的內(nèi)容决采,當(dāng)然最完整的要看官方文檔,但這系列文章的好處是可以快速查詢(xún)到需要的命令或者參數(shù)含義昆汹。這三篇文章是遞進(jìn)關(guān)系明刷,首先是 Django 如何與數(shù)據(jù)庫(kù)建立關(guān)系,其次是運(yùn)用 Django 對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪查改满粗,最后是 Django 的數(shù)據(jù)庫(kù)不能滿(mǎn)足需求的情況下辈末,如何調(diào)用原生 SQL 操作。
講解了 Django models 中:
- manage.py 涉及到 models 的命令
- 字段的類(lèi)型
- 字段的參數(shù)
- Meta 的屬性
- models 的方法
- 模型之間的關(guān)系:外鍵映皆、多對(duì)一挤聘、多對(duì)多(不建議)、一對(duì)一
- 模型的繼承(這樣就可以子類(lèi)去建表捅彻,父類(lèi)不需要再建表)
- 用 Meta 的
db_table
屬性設(shè)置數(shù)據(jù)庫(kù)中的表明
- queryset 對(duì)象的 CRUD 操作
- 使用原生的 SQL 查詢(xún)
.objects.raw()
2 kawabangga 的數(shù)據(jù)遷移
Django的數(shù)據(jù)遷移(Data migration)
介紹了如何生成空的 migrations 文件组去,然后寫(xiě)入自己想遷移的數(shù)據(jù)。同時(shí)步淹,也提到常用的兩種傳統(tǒng)的數(shù)據(jù)庫(kù)復(fù)制操作从隆。
Django 如果做過(guò) makemigrations,在 Django 包所在的位置也會(huì)出現(xiàn)改變缭裆,所以在做 makemigrations 前广料,最好先 git 一次,以便出現(xiàn)問(wè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ù)购桑。
這樣做的問(wèn)題:1、如果數(shù)據(jù)庫(kù)過(guò)大就會(huì)導(dǎo)入不成功氏淑。如下文的評(píng)論提到一樣
也會(huì)出現(xiàn):2勃蜘、導(dǎo)入以后涉及到用戶(hù)的關(guān)系等表出現(xiàn)問(wè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)行整合