ORM相關字段,引數及資料庫遷移

2022-09-11 21:00:31 字數 3043 閱讀 6736

1.charfield,integerfield,autofield,emailfield,textfield(textarea),booleanfield(checkbox),datetimefield(類似datefield)

2.floatfield

引數:max-digits 總位數(不包括小數點和符號)  decimal_places 小數字數

3.datefield

引數:  argument     描述-----(可選)

auto_now      物件儲存時,將當前時間設定為值,通常用於表示最後修改日期的時間戳.

auto_now_add   當物件首次被建立時,自動將該字段的值設定為當前時間.通常用於表示物件建立時間.(僅僅在admin中有意義...)

4.imagefield

default  初始預設檔案

6.urlfield

引數:verify_exists 預設為true, 給定的 url 會預先檢查是否存在( 即url是否被有效裝入且沒有返回404響應).    admin----------

7.nullbooleanfield

意義: 類似 booleanfield加null=true   推薦使用

admin 用乙個選擇框 (三個可選擇的值: "unknown", "yes" 和 "no" ) 來表示這種字段資料.

8.slugfield

意義:"slug" 報紙術語,某個東西的小小標記(短簽), 只包含字母,數字,下劃線和連字元.通常用於urls

9.xmlfield

意義:乙個校驗值是否為合法xml的 textfield

引數:(必須) schema_path  它是乙個用來校驗文字的 relaxng schema #的檔案系統路徑.

10.filepathfield

可選專案為某個特定目錄下的檔名.

引數: (必須)path      乙個目錄的絕對檔案系統路徑.  filepathfield據此得到可選專案

match (可選)    乙個正規表示式, 作為乙個字串, filepathfield 將使用它過濾檔名.此正規表示式只會應用到 base filename 而不是路徑全名.  example: "foo.*\.txt^", 將匹配檔案 foo23.txt 卻不匹配 bar.txt 或 foo23.gif.

recursive (可選)  true or false. 預設值是 false. 是否包括 path 下面的全部子目錄.

example:  filepathfield(path="/home/images", match="foo.*", recursive=true)...會匹配 /home/images/foo.gif 而不匹配 /home/images/foo/bar.gif

注意:在乙個 model 中使用 filefield 或 imagefield 需要以下步驟:

(1)在你的 settings 檔案中, 定義乙個完整路徑給 media_root 以便讓 django在此處儲存上傳檔案.(出於效能考慮,這些檔案並不儲存到資料庫.) 定義media_url 作為該目錄的公共 url. 要確保該目錄對web伺服器使用者帳號是可寫的.

(2) 在你的 model 中新增 filefield 或 imagefield, 並確保定義了 upload_to 選項,以告訴 django使用 media_root 的哪個子目錄儲存上傳檔案.你的資料庫中要儲存的只是檔案的路徑(相對於    media_root).出於習慣你一定很想使用 django 提供的 get__url 函式.舉例來說,如果你的 imagefield 叫作 mug_shot, 你就可以在模板中以 } 這樣的方式得到影象的絕對路徑.

1.null

2.blank 如果為true,該欄位允許不填。預設為false。要注意,這與 null 不同。null純粹是資料庫範疇的,而 blank 是資料驗證範疇的。如果乙個欄位的blank=true,表單的驗證將允許該字段是空值。如果字

段的blank=false,該欄位就是必填的。

3.default 欄位的預設值。可以是乙個值或者可呼叫物件。如果可呼叫,每有新物件被建立它都會被呼叫。

4.primary_key 若為true,則為主鍵。

5.unique 若為true, 則唯一

6.choices 由二元組組成的乙個可迭代物件(例如,列表或元組),用來給字段提供選擇項。 如果設定了choices ,預設的表單將是乙個選擇框而不是標準的文字框,而且這個選擇框的選項就是choices 中的選

項。setting設定:

1

setting設定:

2databases =

11 }

view code

資料庫遷移命令:

python manage.py makemigrations

python manage.py migrate

對於python3,預設驅動mysqldb,而我們需要匯入驅動pymysql,這樣做:在專案名檔案下的__init__.py中寫入:

import pymysql

pymysql.install_as_mysqldb()

mysqlclient目前只支援到python3.4,因此如果使用的更高版本的python,需要修改如下:通過查詢路徑c:\programs\python\python36-32\lib\site-packages\django-2.0-py3.6.egg\django\db\backends\mysql

將這個路徑裡的檔案把下面這條語句注釋掉:

if version <

(1, 3, 3):

raise improperlyconfigured("mysqlclient 1.3.3 or newer is required; you h**e %s" % database.__version__)

若要看轉換過程中的sql,在配置檔案中植入:

logging = ,

},'loggers': ,}} 

view code

表建立完成。

FMDB 資料遷移即資料庫增加新字段

最近公司需要新專案,需要資料持久化 使用的是fmdb操作sqlite,在正常使用過程中沒有什麼毛病的,但是如果一旦需求改了 需要增加欄位的時候就必須要重新寫 或者使用者重新解除安裝安裝,這就會造成使用者資料丟失。剛開始預定方案是判斷版本號之後,對於原先資料庫裡面的資料讀出來然後新增欄位的資料進行寫入...

資料庫遷移

這期專案,需要將另外乙個系統a與現有系統b整合,由於時間比較緊,直接採用遷移oracle資料庫物件的方式,發現之前評估的方案不是特別完善,首先 1 a資料庫為gbk編碼,b資料庫是utf 8編碼格式,a資料遷移需要進行中文字段擴容 至少1.5倍 2 a資料庫需要做效能評估,歷史資料遷移涉的方式,兼顧...

資料庫遷移

資料庫遷移 在開發過程中,需要修改資料庫模型,而且還要在修改之後更新資料庫。最直接的方式就是刪除舊表,但這樣會丟失資料。更好的解決辦法是使用資料庫遷移框架,它可以追蹤資料庫模式的變化,然後把變動應用到資料庫中。在flask中可以使用flask migrate擴充套件,來實現資料遷移。並且整合到fla...