Django 模型
Django 對各種資料庫提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。
Django 為這些資料庫提供了統一的調用API。 我們可以根據自己業務需求選擇不同的資料庫。
MySQL 是 Web 應用中最常用的資料庫。本章節我們將以 Mysql 作為實例進行介紹。你可以通過本站的 MySQL 教學 瞭解更多Mysql的基礎知識。
如果你沒安裝 mysql 驅動,可以執行以下命令安裝:
sudo pip install mysqlclient
資料庫配置
我們在專案的 settings.py 檔中找到 DATABASES 配置項,將其資訊修改為:
HelloWorld/HelloWorld/settings.py: 檔代碼:
這裏添加了中文注釋,所以你需要在 HelloWorld/settings.py 檔頭部添加 # -*- coding: UTF-8 -*-。
上面包含資料庫名稱和用戶的資訊,它們與 MySQL 中對應資料庫和用戶的設置相同。Django 根據這一設置,與 MySQL 中相應的資料庫和用戶連接起來。
定義模型
創建 APP
Django規定,如果要使用模型,必須要創建一個app。我們使用以下命令創建一個 TestModel 的 app:
django-admin startapp TestModel
目錄結構如下:
HelloWorld |-- TestModel | |-- __init__.py | |-- admin.py | |-- models.py | |-- tests.py | `-- views.py
我們修改 TestModel/models.py 檔,代碼如下:
HelloWorld/TestModel/models.py: 檔代碼:
以上的類名代表了資料庫表名,且繼承了models.Model,類裏面的字段代表數據表中的字段(name),數據類型則由CharField(相當於varchar)、DateField(相當於datetime), max_length 參數限定長度。
接下來在settings.py中找到INSTALLED_APPS這一項,如下:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel', # 添加此項 )
在命令行中運行:
$ python manage.py migrate # 創建表結構 $ python manage.py makemigrations TestModel # 讓 Django 知道我們在我們的模型有一些變更 $ python manage.py migrate TestModel # 創建表結構
看到幾行 "Creating table…" 的字樣,你的數據表就創建好了。
Creating tables ... …… Creating table TestModel_test #我們自定義的表 ……
表名組成結構為:應用名_類名(如:TestModel_test)。
注意:儘管我們沒有在models給表設置主鍵,但是Django會自動添加一個id作為主鍵。
資料庫操作
接下來我們在 HelloWorld 目錄中添加 testdb.py 檔(下麵介紹),並修改 urls.py:
HelloWorld/HelloWorld/urls.py: 檔代碼:
添加數據
添加數據需要先創建對象,然後再執行 save 函數,相當於SQL中的INSERT:
HelloWorld/HelloWorld/testdb.py: 檔代碼:
訪問 http://127.0.0.1:8000/testdb 就可以看到數據添加成功的提示。
輸出結果如下:
獲取數據
Django提供了多種方式來獲取資料庫的內容,如下代碼所示:
HelloWorld/HelloWorld/testdb.py: 檔代碼:
更新數據
修改數據可以使用 save() 或 update():
HelloWorld/HelloWorld/testdb.py: 檔代碼:
刪除數據
刪除資料庫中的對象只需調用該對象的delete()方法即可: