django學習-10.django連接mysql8數據庫和創建數據表


1.django模型

Django對各種數據庫提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

Django為這些數據庫提供了統一的調用API。 我們可以根據自己業務需求選擇不同的數據庫。

MySQL是Web應用中最常用的數據庫。

這篇博客,我們將以Mysql作為實例進行介紹。

如果你想了解更多MySQL的基礎知識,可以查看該菜鳥教程地址:https://www.runoob.com/mysql/mysql-tutorial.html

2.第三方庫mysqlclient的安裝

細節:python要操作mysql數據庫,需要安裝一個第三方庫【mysqlclient】,該第三方庫【mysqlclient】其實是一個mysql驅動。

2.1.第一步:使用命令【pip install mysqlclient 】,可以下載並安裝最新版本的mysqlclient。

 

 

 2.2.第二步:接着,使用命令【pip list】,可以查看mysqlclient目前版本號。

 

 

 

3.python操作mysql的完整步驟(假設這個django項目【helloworld】是全新項目,未創建過一個數據庫)

3.1.第一步:我們要在本地mysql數據庫創建一個新數據庫,比如一個名為【hongjingsheng_project】的新數據庫。

細節:

一、因為django自帶的orm框架只能操作數據表,不能操作數據庫,所以數據庫需要我們自己在本地電腦手動用mysql命令行或者用navicate工具進行創建(我選擇的是用navicate工具進行創建)。

 

 

 

 

 

 

 

 

 3.2.第二步:接着,我們查看django項目【helloworld】里的路徑為【helloworld/helloworld/settings.py】這個py文件里的屬性【DATABASES】的系統提供的默認數據。

 

 

 細節:屬性【DATABASES】的具體使用,可以查看django官方文檔地址:https://docs.djangoproject.com/en/3.1/ref/settings/#databases

 

 

 

 3.3.第三步:因為我們的django項目【helloworld】需要使用mysql數據庫當成存儲項目數據的數據庫,所以我們接着要對django項目【helloworld】里的路徑為【helloworld/helloworld/settings.py】這個py文件里的屬性【DATABASES】值進行如下更改。

 

 

 

 

 

 

細節:

一、屬性【DATABASES】的數據類型為字典,在屬性【DATABASES】里的【DATABASES["default"]["ENGINE"]】,這個【ENGINE】含義是:連接數據庫驅動的名稱。名稱有以下幾種情況:

  • django.db.backends.postgresql   連接數據庫PostgreSQL
  • django.db.backends.mysql        連接數據庫mysql
  • django.db.backends.sqlite3      連接數據庫sqlite
  • django.db.backends.oracle       連接數據庫oracle

 

 

 

 

 3.4.第四步:我們在django項目【helloworld】里,通過命令行新建一個應用【hello】(在之前博客里有提到這步驟怎么操作,該應用【hello】已創建過了,在這里就不需要重復創建了)。

 3.5.第五步:我們將應用【hello】添加到 django項目【helloworld】里的路徑【helloworld/helloworld/settings.py 】里的屬性 INSTALLED_APPS中,也就是告訴django框架在django項目【helloworld】里有這么一個應用【hello】。(在之前博客里有提到這步驟怎么操作,該應用【hello】已被添加到屬性 INSTALLED_APPS,在這里就不需要重復添加了)。

 

 

  3.6.第六步:修改django項目【helloworld】里對應路徑【helloworld/hello/models.py】的這個models.py里的代碼內容。

 

 

 

細節:從上面截圖可以看到,我們新建了一個子類Person,子類Person繼承自父類models.Model, 這個子類Person有屬性name(name表示姓名)和屬性age(age表示年齡)。

這里用到了兩種類:類CharField和類IntegerField,更多這種類的使用等后續相關博客里再編寫。

 

注意事項:如果要實現創建多個數據表,可以在models.py里創建多個不同類名的類,具體操作可以看官方文檔地址:https://docs.djangoproject.com/en/3.1/intro/tutorial02/

 

3.7.第七步:通過相關命令行,在一個指定的數據庫里創建相關的表結構/表(備注:表結構其實也就是表,叫法不一樣而已)。(在實際開發過程中,【3.7.第七步】這步驟可以忽略,但為了寫完整的操作流程,這步也就大概寫了一些主要操作內容。)

3.7.1.首先,在還沒創建任何一個應用的表結構之前,我們可以看到django項目【helloworld】對應的路徑【helloworld/hello/migrations】的該migrations文件夾里只有一個【__init__.py】。

3.7.2.接着,我們在路徑【helloworld/】下,

3.7.2.1.首先,假設我們在【settings.py】該腳本文件里把【'ENGINE'】的值錯誤填寫為【 'django.db.backends.'】,然后執行命令行【python manage.py migrate】。(【3.7.2.1】這部分內容只是為了教大家怎么按照報錯日志去簡單定位問題,可以忽略不看)

 

 

 

 

 

細節: 從上圖報錯信息,我們可以按照報錯信息,去認真看下報錯信息大概說了啥,可以按照報錯信息去簡單定位問題,也可以復制相關核心報錯信息去百度查找答案。

3.7.2.2.接着,假設我們在【settings.py】該腳本文件里把【'ENGINE'】的值正確填寫為【 'django.db.backends.mysql'】,然后第一次成功執行命令行【python manage.py migrate】。

 

 

 

 

細節:這些日志表示已經成功幫我們在指定數據庫里生成相關的數據表了。

 

 

 

 

 

 

3.8.第八步:為了讓django框架知道我們在具體哪個應用里的models.py里內容有一些變更,需要做接下來的操作。

我們現在以一個應用【hello】為數據來進行接下來的講解。

3.8.1.首先,我們在路徑【helloworld/】下,執行命令行【python manage.py makemigrations hello】。

細節:

一、要遷移一個指定應用名的數據表信息,命令行為python manage.py makemigrations 應用名】。

二、這個命令行python manage.py makemigrations hello執行成功后會實現的功能是:只是會在這個【hello】應用里的唯一文件名為【migrations】的文件里生成相關遷移文件,這些遷移文件有涉及了哪些需要新增和修改的數據表信息,但還不會執行在指定數據庫里生成相關數據表的操作!(這些遷移文件在【3.9】章節里提到的一個新命令成功執行后,就會執行在指定數據庫里創建相關數據表的操作!)

三、要遷移一個指定django項目里的所有應用的數據表信息,比如遷移我們這個django項目【helloworld】里的所有應用的數據表信息,命令行為python manage.py makemigrations】。

 

 

 

 

 

 

 

 

3.9.第九步:接着,為了讓django框架知道我們要針對哪個應用進行數據表的新增和修改,需要做接下來的操作。

我們現在仍然以一個應用【hello】為數據來進行接下來的講解。

3.9.1.首先,我們在路徑【helloworld/】下,執行命令行【python manage.py migrate hello】。

細節:

一、要在指定數據庫里創建一個指定應用名包含的最新的數據表信息,命令行為python manage.py migrate 應用名】。

二、這個命令行python manage.py migrate hello】執行成功后會實現的功能是:在指定數據庫名為【hongjingsheng_project】的數據庫里生成一個應用名為【hello】的應用包含的最新的數據表信息。)

三、要在指定數據庫里生成一個指定django項目里的所有應用的數據表信息,比如生成我們這個django項目【helloworld】里的所有應用的數據表信息,命令行為python manage.py migrate】。

 

 

 

細節:

一、生成的數據表的表名的取值規則為:應用名_類名(注意:類名的第一個大寫字母會被轉化為小寫字母)(如:hello_person)。

二、盡管我們沒有在【hello】應用里的models.py給person表設置主鍵,但是django框架會自動添加一個id作為person表的主鍵。

 三、【python manage.py makemigrations】 和 【python manage.py makemigrations 應用名】和 【python manage.py migrate】和【python manage.py migrate 應用名】,這四個命令行的更具體使用和區別可以看下這位大牛寫的博客地址:https://blog.csdn.net/hpu_yly_bj/article/details/78928089

 三、對於我們而言,目前只要知道這四個命令行大概怎么使用即可,要深入學習的話只能多百度多總結多做筆記多去思考原理!

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM