摘要:當(dāng)你第一次用的數(shù)據(jù)庫(kù)請(qǐng)求表中不存在的字段時(shí)會(huì)導(dǎo)致錯(cuò)誤。不關(guān)心數(shù)據(jù)庫(kù)中是否存在未被模型表示的。缺點(diǎn)數(shù)據(jù)量大的時(shí)候,速度相對(duì)較慢,表的關(guān)系比較復(fù)雜的時(shí)候可以導(dǎo)入不成功。
djang data migration
在使用django框架開(kāi)發(fā)的過(guò)程中,我們不可避免的遇到models層的變更,就涉及到數(shù)據(jù)庫(kù)表的變動(dòng),django給我提供了一個(gè)migration的工具來(lái)做這些數(shù)據(jù)庫(kù)表的變更。
djang migration如果不加appname,那么就是指所有包含migrations 目錄的app
# 基于當(dāng)前的model 檢測(cè)修改,創(chuàng)建遷移策略文件 python manage.py makemigrationsmigrations失敗# 執(zhí)行遷移動(dòng)作 python manage.py migrate
有時(shí)候如果models改動(dòng)比較大,migrations會(huì)失敗,這個(gè)時(shí)候有兩種選擇,手工去修改migrations文件,第二種是清除所有migrations,重新migrate
手工修改migrations文件通過(guò)報(bào)錯(cuò)信息加上SQL語(yǔ)句找到找到問(wèn)題,然后具體問(wèn)題具體分析,是修改數(shù)據(jù)庫(kù)里面的數(shù)據(jù),還是修改migrations生成的腳本。
python manage.py migrate python manage.py sqlmigrate0001
當(dāng)處理模型修改的時(shí)候:
如果模型包含一個(gè)未曾在數(shù)據(jù)庫(kù)里建立的字段,Django會(huì)報(bào)出錯(cuò)信息。 當(dāng)你第一次用Django的數(shù)據(jù)庫(kù)API請(qǐng)求表中不存在的字段時(shí)會(huì)導(dǎo)致錯(cuò)誤。
Django不關(guān)心數(shù)據(jù)庫(kù)表中是否存在未在模型中定義的列。
Django不關(guān)心數(shù)據(jù)庫(kù)中是否存在未被模型表示的table。
在使用SQLite3數(shù)據(jù)庫(kù)時(shí), 因?yàn)镾QLite3 不支持刪除列操作,只有有限地 ALTER TABLE 支持,
所以修改數(shù)據(jù)庫(kù)列的操作被新建表然后select into newtable 代替,所以會(huì)存在更多問(wèn)題
參考
http://www.tuicool.com/articles/yM3IVr
python manage.py makemigrations You are trying to add a non-nullable field "college" to majorproperty without a default; we can"t do that (the database needs something to populate existing rows). Please select a fix: 1) Provide a one-off default now (will be set on all existing rows) 2) Quit, and let me add a default in models.py Select an option: 1 Please enter the default value now, as valid Python The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now() >>> 1
在migrate的時(shí)候提示你需要指定一個(gè)默認(rèn)值,用以處理NULL的情況
清除migrations清除所有app目錄/migrations/下除__init__.py 文件之外的py文件
find . -path "*migrations*" -name "*.py" -not -path "*__init__*" -exec rm {} ;squashmigrations
當(dāng)migrations越來(lái)越多的時(shí)候執(zhí)行 makemigrations 和 migrate 就會(huì)越來(lái)越慢,可以考慮對(duì)其瘦身(減少migrations文件的數(shù)量)
python manage.py squashmigrations schools 0002數(shù)據(jù)導(dǎo)入導(dǎo)出 數(shù)據(jù)導(dǎo)出
django 項(xiàng)目提供了一個(gè)導(dǎo)出的方法 python manage.py dumpdata, 不指定 appname 時(shí)默認(rèn)為導(dǎo)出所有的app
python manage.py dumpdata [appname] > appname_data.json數(shù)據(jù)導(dǎo)入
數(shù)據(jù)導(dǎo)入,不需要指定 appname
python manage.py loaddata appname_data.json
優(yōu)點(diǎn):可以兼容各種支持的數(shù)據(jù)庫(kù),也就是說(shuō),以前用的是 SQLite3,可以導(dǎo)出后,用這種方法導(dǎo)入到 MySQL, PostgreSQL等數(shù)據(jù)庫(kù),反過(guò)來(lái)也可以。
缺點(diǎn):數(shù)據(jù)量大的時(shí)候,速度相對(duì)較慢,表的關(guān)系比較復(fù)雜的時(shí)候可以導(dǎo)入不成功。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/37920.html
摘要:地址序列化為靈感來(lái)源于多個(gè)實(shí)例單個(gè)實(shí)例排除字段僅包括字段關(guān)系查詢(xún)深度默認(rèn)為增加一些自定義的函數(shù)可傳遞參數(shù)的函數(shù)像一樣使用與相比為什么很多人都認(rèn)為更好用大概就是因?yàn)楦奖慊静樵?xún)已實(shí)現(xiàn)示例關(guān)系查詢(xún)其它去掉一些的重復(fù)工作以為例通過(guò)繼承中的就 GitHub地址: https://github.com/honmaple/maple-json sqlalchemy object序列化為json...
摘要:一個(gè)用來(lái)做數(shù)據(jù)遷移的擴(kuò)展,一般都是結(jié)合使用,在上一篇文章中我也介紹了這個(gè)擴(kuò)展,需要的小伙伴可以看一下,后續(xù)我會(huì)將更深層的寫(xiě)出來(lái)。 flask-migrate一個(gè)用來(lái)做數(shù)據(jù)遷移的falsk擴(kuò)展,一般都是結(jié)合flask-sqlalchemy使用,在上一篇文章中我也介紹了這個(gè)擴(kuò)展,需要的小伙伴可以看一下,后續(xù)我會(huì)將flask-sqlalchemy更深層的寫(xiě)出來(lái)。【config.py】 SQL...
摘要:文檔開(kāi)發(fā)基于單元測(cè)試實(shí)現(xiàn)的自動(dòng)化文檔當(dāng)前文檔開(kāi)發(fā)計(jì)劃功能開(kāi)發(fā)當(dāng)前計(jì)劃功能技術(shù)債務(wù)清償當(dāng)前技術(shù)債務(wù)單元測(cè)試盡可能減少當(dāng)前單元測(cè)試成為開(kāi)發(fā)者需要加入我們的組織,如有相關(guān)意愿請(qǐng)發(fā)送郵件至小牛哥,我們會(huì)聯(lián)系你的。 QueryPHP 非常歡迎各位給我們共同的偉大的作品添磚加瓦,實(shí)現(xiàn)為 PHP 社區(qū)提供一個(gè)好框架的美好愿景。 文檔開(kāi)發(fā).基于單元測(cè)試實(shí)現(xiàn)的自動(dòng)化文檔 當(dāng)前文檔開(kāi)發(fā) 計(jì)劃功能.開(kāi)發(fā)...
摘要:命令需要注冊(cè)回調(diào)函數(shù)來(lái)將對(duì)象添加到導(dǎo)入列表。創(chuàng)建遷移腳本在,數(shù)據(jù)庫(kù)遷移工作由遷移腳本完成。函數(shù)實(shí)施數(shù)據(jù)庫(kù)更改,是遷移的一部分,函數(shù)則刪除它們。另一方面,自動(dòng)遷移通過(guò)尋找模型定義和數(shù)據(jù)庫(kù)當(dāng)前狀態(tài)間的不同為和生成代碼。 9、數(shù)據(jù)庫(kù)在視圖函數(shù)中的使用 在前面章節(jié)描述的數(shù)據(jù)庫(kù)操作是可以在視圖函數(shù)中直接使用的。示例5-5展示的新版本主頁(yè)實(shí)現(xiàn)了用戶(hù)輸入名字并保存到數(shù)據(jù)庫(kù)中。 示例5-5. he...
閱讀 2589·2023-04-26 03:00
閱讀 1405·2021-10-12 10:12
閱讀 4200·2021-09-22 15:33
閱讀 2927·2021-09-22 15:06
閱讀 1540·2019-08-30 15:44
閱讀 2152·2019-08-30 13:59
閱讀 541·2019-08-30 11:24
閱讀 2421·2019-08-29 17:07