在Django中使用資料庫mariadb10.2
在上一章節中學習了如何建立Django項目,在Django項目中建立web應用,以及如何在Django主程式的URL中引用web應用中的URL。下面來了解如何在Django中使用資料庫。Django中想要使用資料庫, 首先要了解mysite/mysite/settings.py中關于資料庫連接配接資訊選項的設定。
Django預設使用的是sqlite3資料庫,sqlite是一個輕量級的基于檔案的資料庫,是以資料遷移非常友善。多用于單機程式,嵌入式,開發測試demo等。但它不支援資料庫使用者管理,在同一時間隻允許一個寫操作是以像一些要求資料使用者對資料庫的權限設定,對資料庫進行并發操作時sqlite就不是我們想要的了,這時我們可以使用MySQL,postgresqlm,Oracle等大型資料庫。因為我們要寫的是一個投票系統,理論上會有很多使用者可以進行投票(哈哈),是以這裡我們使用mariadb資料庫,它是在MySQL基礎上的一個開源的資料庫,與MySQL完全相容。關于mariadb請自行百度。
這裡我使用的是yum的方式進行安裝的,友善快捷,Django需要MySQL5.6以上的版本,是以這裡使用mariadb10.2.31。該版本包含MySQL5.6,MySQL5.7以及一些自有的新的特性。
1.1 設定mariadb的官方yum源
如果想要使用其它版本請到官網https://downloads.mariadb.org/自行下載下傳對應版本。
1.2 安裝mariadb10.2.31
安裝完成後,你應該能看到如下界面:

1.3 mariadb服務管理
在centos 7中通過yum安裝的程式我們都可以使用systemctl工具來對其服務進行管理
1.4 初始化mariadb資料庫
MariaDB 安裝完畢并成功啟動後為了確定資料庫的安全性和正常運轉,需要先對資料庫程式進行初始化操作。
初始化mariadb
1.5 配置mariadb資料庫的編碼
mariadb的預設資料庫編碼是拉丁文,如果你不信我們登陸資料庫看一下:
我們需要調整下my.cnf的配置檔案
my.cnf
設定好字元集後,重新開機mariadb,登入資料庫驗證字元集
資料庫設定到這裡算是告一段落,但事情并沒有結束,我們還需要為我們的Django程式建立一個 資料庫,以及操作這個資料庫的使用者。
1.6 建立資料庫mysqite,并為資料庫配置設定使用者。
好了我們已經建立好了資料庫:mysite,資料庫使用者:mysite_user 并且允許該使用者在任意主機通路該資料庫。
1.7 驗證是否可以遠端連接配接資料庫mysite
在運作一台主機嘗試遠端登入資料庫檢視,是否可以登入,為確定可以登入建議關閉防火牆,如果一切順利你會看到:
到目前為止,資料庫操作就到這裡。下面到settings.py中進行設定
如果我們使用的是sqlite3資料庫,那麼就不需要像上面那樣設定資料庫及修改settings.py就可以直接使用資料庫了,但我們要使用的是mariadb,是以我們還需要修改這段配置。
settings.py資料庫部分設定
修改後的settings.py看起來像下面這樣:
資料庫連接配接設定好後,你還需要做一件事,那就是設定Django的時區,Django預設的時區是UTC,我們需要将時區改成中國的,是以你需要在settings.py中找到TIME_ZONE選項并改正。修改後的樣子如下:
到此settings.py配置就告一段落。我們通過Django以ORM的方式在資料庫中建立表。
我們在來看一下mysite項目的結構:
再來看一下web應用polls的結構:
上一章節我們隻是簡單的建立了應用polls,并對其進行通路,如果我們想要polls目錄下的models.py能夠在資料庫中建立表,還需要在主程式的settings.py中将我們的polls應用注冊進去才可以。
因為Django是通過 python manage.py migrate來建立表的,該指令會将settings.py中的INSTALLED_APPS中注冊的應用結合DATABASES中的資料庫連接配接資訊,并根據INSTALLED_APPS中注冊應用的models.py進行資料的遷移(也就是建立表)。是以我們需要将polls應用注冊到settings.py的INSTALLED_APPS選項中。
注冊後的檔案看起來像下面這樣:
好了現在我們可以到polls/models.py中去建立表了,
建立表前先簡單的設計一下我們的這個投票程式。我們将建立兩個模型:問題和選擇。
問題模型中有兩個字段:問題字段和問題的釋出日期字段。
選擇模型中有三個字段:一個關聯問題模型的外鍵(一個問題對應一個選擇投票的權利),選擇的文本和投票計數。
當我們設計好表結構後就可以動手在models.py中去建立表了,models.py中的類相當于資料庫當中的表,類的特殊之處在于需要繼承Django為我們提供的models.Model。然後類中的屬性就相當于資料庫中的字段,如果沒有接觸過ORM也許會對這種建立表的方式感到不解,不過随着不斷的學習我相信會慢慢了解的。
我的models.py看起來像下面這樣
到這裡我們不要停歇還差一步就可以了,雖然前邊又是配置資料庫連接配接資訊,又是注冊應用的,但我們現在還是無法連接配接資料庫,因為python使用mariadb資料庫還需要一些第三方子產品的輔助,這裡我們使用mysqlclient子產品。安裝過程中可能會遇到很多問題,不過我這裡都解決了,我就不帶着大家一步步入坑了。直接把坑填好:
現在可以說是萬事俱備隻欠東風了,在資料庫mysite中建立表(執行資料遷移)
如果一切順利,你會看到如下:
我們可以執行如下指令來檢視Django剛剛都為我們都做了什麼:
執行資料遷移(在資料庫中建表)
驗證:到資料庫中驗證是否建立了表
你會看到如下表:
好啦,關于資料庫就先到這裡吧,下一章節将了解Django為我們提供的admin背景。
本文參考文檔:https://docs.djangoproject.com/en/2.2/intro/tutorial02/
下一篇:初識Django admin:javascript:void(0)