Django連接mysql數據庫淺析

一、安裝pymysql

1. 查看已安裝的第三方庫的列表
   命令: pip list在這裏插入圖片描述
  2. 如果沒有pymysql這個第三方庫,則安裝(需要注意的是django2.2版本的暫時還不支持pymysql,所以如果使用的話,需要先降到2.1版本,不然可能會報錯,如果報錯,請查看我上一篇的解決辦法)
   命令:pip install django==2.1.0
   命令:pip install pymysql
  
  3. 安裝成功後的第三方庫
在這裏插入圖片描述

二、在主項目的文件中設置連接

1. 在項目主目錄下的init文件中添加下面兩句代碼

import pymysql  # 導入第三方模塊,用來操作mysql數據庫

pymysql.install_as_MySQLdb()

需要注意的是,如果你import pymysql的時候下面有紅線,並且你已經在你使用的python虛擬環境中安裝好了pymysql模塊,那麼你可以重新打開一下你的項目:點擊一下 File—> close project ----> 然後再打開你使用的項目,這時import 導入pymysql就不會報錯了。

2. 在settings文件中設置數據庫連接

DATABASES = {
    'default': {
        # python自帶的一個數據庫,基本不會被使用
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        # 註冊我們自己使用的數據庫連接
        'ENGINE': 'django.db.backends.mysql',  # 數據庫引擎
        'NAME': 'mydb', #數據庫名稱
        'USER':'admin', # 連接數據庫的用戶名稱
        'PASSWORD':'Root110qwe',  # 用戶密碼
        'HOST':'192.168.152.154', # 訪問的數據庫的主機的ip地址
        'PORT':'3306', # 默認mysql訪問端口
    }
}

需要注意的是,host需要寫成你的數據庫所在的主機或虛擬機的ip地址,如果是在本機上或者是virtualbox中設置了端口轉發可以使用127.0.0.1即可。

三、創建數據庫模型類

1. 創建模型類(找到你需要使用模型的項目中的任意app的目錄下的models文件)

from django.db import models

# Create your models here.

# 創建模型類
class  Meishi(models.Model):
    id = models.AutoField(primary_key=True)  # 該字段可以不寫,它會自動補全
    food_name = models.CharField(max_length=30) # 設置食物名稱
    food_author = models.CharField(max_length=8) # 設置食物製作人
    food_money = models.FloatField()  # 設置食物價格
    food_star = models.CharField(max_length=10,default='普通') # 設置食物美味程度

    def __str__(self):  # 重寫直接輸出類的方法
        return "<Meishi:{id=%s,food_name=%s,food_author=%s,food_money=%s,food_star=%s}>"\
               %(self.id,self.food_name,self.food_author,self.food_money,self.food_star)

2. 將我們創建好的模型類映射到數據庫

a:

直接在命令行執行命令 : python manage.py makemigrations 或 python manage.py makemigrations app_name

可以指定你的項目中的app的名字;也可以不指定,直接映射該項目中全部的app中的表模型

b:

在pycharm中運行 Run manage.py Task 然後輸人makemigrations 或 makemigrations app_name 同上面的效果是一樣的
在這裏插入圖片描述
在這裏插入圖片描述
  3. 將我們映射的數據表真正在數據庫中創建的對應的表

a:

直接在命令行執行命令 : python manage.py migrate 或 python manage.py migrate app_name

可以指定你的項目中的app的名字;也可以不指定,直接創建項目中所有app下映射好的表

b:

在pycharm中運行 Run manage.py Task 然後輸人migrate 或 migrate app_name 同上面的效果是一樣的

在這裏插入圖片描述
在這裏插入圖片描述

現在我們在數據庫中就可以看到我們創建的表了,效果圖如下:
   在這裏插入圖片描述

數據庫中創建的表的名稱是以項目中app的名稱+我們自己創建的表的模型類的類名組合成的。

可以通過desc 表名的命令查看錶結構就是我們在模型類中設置的表結構:
在這裏插入圖片描述

四、創建好對數據庫增刪改查的視圖渲染方法

1. 在項目使用的app目錄下的views.py文件中寫增刪改查的方法

from django.shortcuts import render        # 可以用來返回我們渲染的html文件
from django.http import HttpResponse       # 可以返回渲染的頁面
from .models import Meishi                 # 導入我們的模型類
# Create your views here.

# 添加數據方法
def add_food(request):
    # 第一種方式插入數據
    tcpg = Meishi(food_name='糖醋排骨',food_author='一一',food_money=25,food_star='美味')
    tcpg.save()   # 一定要記得保存,不然數據無法插入進去
    # 第二種方式插入數據
    lzj = Meishi()
    lzj.food_name = '辣子雞'
    lzj.food_author = '張三'
    lzj.food_money = '30'
    lzj.food_star = '超級美味'
    lzj.save()   # 一定要記得保存,不然數據無法插入進去
    # 第三種方式插入數據(該方法不需要保存,會自動保存)
    sltds = Meishi.objects.create(food_name='酸辣土豆絲',food_author='一一',food_money=25,food_star='美味')
    # 第四種方式插入數據(該方法不需要保存,且不會插入重複數據)
    clbc = Meishi.objects.get_or_create(food_name='醋溜白菜',food_author='李四',food_money=25,food_star='很美味')
    return HttpResponse("添加數據成功")

# 查詢數據方法
def select_food(request):
    # 查詢表中的所有數據
    rs = Meishi.objects.all()
    print(rs)
    # 根據篩選條件查詢出表中的單挑數據(注意如果條件查詢出多條數據,使用該語句會報錯)
    rs1 = Meishi.objects.get(food_name='醋溜白菜')
    print(rs1)
    # 根據篩選條件查詢出表中的數據(可查詢出多條)
    rs2 = Meishi.objects.filter(food_author="一一")
    rs2 = list(rs2)
    print(rs2)
    return HttpResponse("查詢數據成功")

# 更新數據方法
def update_food(request):
    # 根據條件查詢後再修改再保存
    clbc = Meishi.objects.get(food_name='醋溜白菜')
    clbc.food_star = '難喫'
    clbc.save()
    # 直接修改所有的數據
    Meishi.objects.all().update(food_star='美味')
    return HttpResponse("修改數據成功")

# 刪除數據方法
def delete_food(request):
    Meishi.objects.get(id=1).delete()
    return HttpResponse("刪除數據成功")

2. 在項目中對應app下的urls文件中配置對應的路由

from django.urls import path,include  # path設置我們的路由,include可以設置我們的分路由
from . import views  # 將我們寫好的views文件導入

urlpatterns = [   # 我們這個app的所有路由都會寫在這個文件下
    path("add_food/",views.add_food),
    path("select_food/",views.select_food),
    path("update_food/",views.update_food),
    path("delete_food/",views.delete_food),
]

五、前端顯示

這個時候我們通過我們設置的路由即可對數據庫中的表進行增刪改查操作:
http://127.0.0.1:8000/add_food/
http://127.0.0.1:8000/select_food/
http://127.0.0.1:8000/update_food/
http://127.0.0.1:8000/delete_food/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章