Django學習筆記——ORM模型

ORM介紹

全稱Object Relational Mapping,中文名叫對象關係映射,通過ORM可以通過類去操作數據庫,而不用使用原生SQL語句。通過把表映射成類,把字段映射成屬性,最終還是會轉化爲原生SQL語句。

Navicat與MySql8.0建立連接時報錯

轉載解決辦法

創建和映射

  1. 在app下的models中創建models.Model的子類,添加需要的屬性。
  2. 在虛擬環境下執行python manage.py makemigrations,生成遷移腳本文件。
  3. 使用python manage.py migrate將生成的遷移腳本文件映射到數據庫中。

簡單的增刪改查

  1. 添加:創建一個要添加數據的實例,實例命.save()。

  2. 查詢:
    模型名.objects.get(pk=主鍵值),根據主鍵獲取一條信息。
    模型名.objects.filter(篩選條件),選取滿足所有條件的信息,如果使用.first()則是查詢第一個滿足條件的數據。

  3. 刪除:實例命.delete()。

  4. 修改數據:先查詢,修改對應值,再使用.save()。

模型常用字段

  1. AutoField:映射到數據庫中是一個int類型,又自增長的性質,一般用做主鍵,在參數裏寫入primary_key=True。
  2. BigAutoField:64位整形,類似於AutoField。
  3. BooleanField:在模型層面接受的是True/False。在數據庫層面是tinyint類型。如果沒有指定默認值,默認值是None。
  4. CharField:在數據庫層面是varchar,在python層面就是普通的字符串,定義時必須指定最大長度,也就是傳入參數max_length。字符長度超過254個建議使用TextField。
  5. DateField:在python中是datetime.date類型,可記錄年月日。映射到數據庫中是date類型。auto_now=True參數保存當前時間;auto_now_add參數,記錄數據被第一次添加的時間。
  6. DateTimeField:類似於DateField,但可以存儲時間,也可使用上述兩個參數。
  7. TimeField:時間類型,在數據庫中是time類型,在Python中是datetime.time類型。
  8. EmailField:類似於CharField,在數據庫也是varchar類型,默認最大長度是254。
  9. FloatField,IntegerField,BigIntegerField,PositiveIntegerField,SmallIntegerField,PositiveSmallIntegerField。
  10. TextField: 在數據庫中是longtext,可以存儲任意長度的數據。
  11. UUIDField:只能存儲UUID格式的字符串,一般用作主鍵。
  12. URLField:類似於CharField,只能用來存儲url格式的字符串,默認長度200。
  13. 選中一個字段類型,Ctrl+b,可以查看所有類型。

Field中常用的參數

  1. null:如果設置爲True,Django將會在映射的時候指定是否爲空,默認爲False,在使用字符串型的Field時儘量不要使用這個參數。
  2. blank:標識這個字段在表單驗證時是否可以爲空,默認爲False,null是數據庫級別的,blank是表單驗證級別的。
  3. db_column:可以改變映射到數據庫時的名字。
  4. default:指定初始值。
  5. primary_key:是否爲主鍵,默認爲False。
  6. unique:在表中這個字段是否爲唯一的,一般是設置手機號或者郵箱。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章