1. 程式人生 > >Django中使用mysql資料庫並使用原生sql語句操作

Django中使用mysql資料庫並使用原生sql語句操作

Django自身預設使用sqlite3這個輕量級的資料庫,但是當我們開發網站時,sqlite3就沒有mysql好,sqlite3適合一些手機上開發使用的資料庫。

準備的軟體

  1. mysql資料庫,版本5.7及以上。
  2. navicat,(可選的)。使用navicat主要是簡化我們對資料庫的操作。沒有也一樣。
  3. 安裝mysql驅動程式。
    常見的驅動程式:
    a. MySQL-python:也就是MySQLdb,是對c語言操作資料庫的一個簡單封裝。遵循了Python DB API v2,但是隻支援python2,目前還不支援python3.
    b. mysqlclient
    :是MySQL-python的另外一個分支,支援python3並且修復了一些bug。(分支就是在原來的基礎上做了一些修改,但本質上還是MySQL-python。最大的一個改動就是可以支援python3。)
    c. pymysql:純python實現的一個驅動,因為是純python編寫的,因此效率不如MySQL-python,並且也是因為是純python編寫的,因此可以和python無縫銜接。
    d. MySQL Connecter/Python:MySQL官方推出的使用純python連線MySQL的驅動。因為是純python開發的,效率也不高,但能無縫銜接。

還有很多就不介紹了。
因為我使用的時python3,所以我使用的是mysqlclient

安裝驅動的方式:

pip install mysqlclient

Django中連線MySQL資料庫

在專案中的settings.py檔案中,修改DATABASES這個字典中的資料:
原來的程式碼為

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
     }
}

修改為

DATABASES = {
    'default': {
    		#資料庫引擎
'ENGINE': 'django.db.backends.mysql', #資料庫的名字 'NAME': 'test', #連線資料庫的使用者名稱 'USER': 'root', #連線資料庫的密碼(下載mysql時配置的密碼) 'PASSWORD': 'root', #資料庫的主機地址 'HOST':'127.0.0.1', #資料庫的埠號,預設為3306,也可以不寫這一行程式碼 'PORT':'3306' } }

這樣就能連線到資料庫了,就能對資料庫進行操作了。

在Django中操作資料庫

在Django中操作資料庫的方式有兩種,第一種就是使用原生sql語句操作,第二種就是使用ORM模型來操作。

原生sql語句操作資料庫

首先使用navicat連線了mysql資料庫,新建一個test的資料庫。然後在test中新建一個book的表,有三個值id(主鍵,自動增長),nameauthor
如果沒有navicat的就是用sql語句建立上述資訊。

新建一個專案,配置好settings.py中的資訊並且能連線上資料庫,在settings.py的同級目錄下新建一個views.py的檔案,templates資料夾下新建一個index.html的檔案。
views.py中寫入:

from django.shortcuts import render
#匯入`connection`
from django.db import connection

def index(request):
    cursor = connection.cursor()
    #要想使用sql原生語句,必須用到execute()函式
    #然後在裡面寫入sql原生語句
    cursor.execute("insert into book(id,name,author) values (null ,'三國演義','羅貫中')")
    return render(request,'index.html')

urls.py中寫入:

from . import views
from django.urls import path

urlpatterns = [
    path('', views.index),
]

輸入網址,在網頁中我們看不到任何資訊,是因為我們沒有編寫html檔案,但是已經執行了views.index中的程式碼。重新整理資料庫可以看到
在這裡插入圖片描述
資訊已經插入進去了。
我們也可以查詢資料庫裡面的資料,修改index函式:

def index(request):
    cursor = connection.cursor()
    #cursor.execute("insert into book(id,name,author) values (null ,'三國演義','羅貫中')")
    cursor.execute("select * from book")
    #使用一個變數來接收查詢到的資料,
    #fetchall()返回查詢到的所有資料
    rows = cursor.fetchall()

    for row in rows:
        print(row)
    return render(request,'index.html')

然後我們再重新整理網頁,在控制檯就能看到從資料庫中查詢到的資訊了。
當然還可以執行刪除,修改等操作,只需要修改execute()中sql語句就行了。

ORM模型

https://blog.csdn.net/xujin0/article/details/83550487