Django入門教程(十一)資料庫ORM一對多
Django 模型是與資料庫相關的,與資料庫相關的程式碼一般寫在 models.py 中,Django 支援 sqlite3, MySQL等資料庫,只需要在settings.py中配置即可,不用更改models.py中的程式碼,豐富的API極大的方便了使用。
Django框架的資料庫操作:這裡的資料庫操作並沒有採用原始的sql語句的形式,而是採用了orm技術實現資料的增刪改查。這裡的orm指的是物件關係對映(Object Relational Mapping),它是將表與表之間的關係對映為物件與物件之間的關係。在這裡操作物件就是在操作表。所有的增刪改查都是基於物件來完成的。通過這種方式操作資料庫,可以有效的防止sql語句注入的風險。
1、新建專案和應用 採用pycharm自帶的方式建立,一些相關配置已經幫我們配置好了。 2、編寫models.py檔案。 我們新建了一個Person類,繼承自models.Model, 一個人有姓名和身高。
class Person(models.Model): #primary_key=True表示一個table表的主鍵,既然pid這個欄位作為主鍵,那麼這個欄位預設帶有一些約束:非空、唯一、需要指定一個預設值。 # AutoField()表示的是一個自動遞增的整數字段,一般用於表示主鍵。如果model中設定了主鍵,那麼表中就採用model設定的主鍵。如果model沒有設定主鍵,表會自動生成一個id主鍵。 pid=models.AutoField(primary_key=True) # max_length()是CharField必須定義的欄位,用於設定字串的長度,一般範圍在0-255。根據內容長度的大小設定合適的max_length,主要是為了節省記憶體空間。 # 缺少max_length就會報出CharFields must defined a 'max_length' attribute的錯誤。 user_name=models.CharField(max_length=20) # null=True表示資料庫中的user_age欄位的值可以為空,預設值是False。 #blank=True 表示html頁面中,在填寫這個欄位時是否必須填寫,True表示這個欄位的資料可以忽略不寫,False表示頁面中這個欄位的資料必須填寫。一般這個blank針對的是表單資料。 user_height=models.IntegerField(null=True,blank=True)
3、建立資料庫表 這裡就需要用到兩個命令了。 (1)、python manage.py makemigrations 作用:收集models.py中發生變化的模型。執行完這個命令,如果出現No changes detected,說明django沒有檢測到當前model發生變化。 (2)、python manage.py migrate 作用:將model模型這些變化(增刪改查)同步至資料庫中,因為model對應的就是表和欄位,所以要是model發生變化,一定要同步至資料庫,保證model和資料庫內容一致。
①如果是pycharm中,點選下方的Terminal,然後執行第一個命令python