Django中使用mysql數據庫並使用原生sql語句操作


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

准備的軟件
mysql數據庫,版本5.7及以上。
navicat,(可選的)。使用navicat主要是簡化我們對數據庫的操作。沒有也一樣。
安裝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': 'drug',
            #連接數據庫的用戶名
            'USER': 'root',
            #連接數據庫的密碼(下載mysql時配置的密碼)
            'PASSWORD': 'root',
            #數據庫的主機地址
            'HOST':'127.0.0.1',
            #數據庫的端口號,默認為3306,也可以不寫這一行代碼
            'PORT':'3306'
    }
}

這樣就能連接到數據庫了,就能對數據庫進行操作了。

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

原生sql語句操作數據庫
首先使用navicat連接了mysql數據庫,新建一個test的數據庫。然后在test中新建一個book的表,有三個值id(主鍵,自動增長),name,author。
如果沒有navicat的就是用sql語句創建上述信息。

新建一個項目,配置好settings.py中的信息並且能連接上數據庫,

django-admin startproject drug

新建一個應用

python manage.py startapp drug_text

在setting文件中注冊APP應用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'drug_text',
]

設置url信息

from django.contrib import admin
from django.urls import path, re_path
from django.conf.urls import include, url

urlpatterns = [
    path(r'admin/', admin.site.urls),
    path(r'user/', include('drug_book.urls')),
]

在drug_textAPP中創建urls.py文件夾

from django.contrib import admin
from django.urls import path, re_path
from django.conf.urls import include, url
from drug_book import views

urlpatterns = [
    path(r'msyql_text/', views.mysql_text),

]

在views.py文件創建處理函數

from django.shortcuts import render
from django.db import connection
from django.http import HttpResponse


# Create your views here.

def mysql_text(request):
    cursor = connection.cursor()
    # 插入語句
    cursor.execute("insert into drug_text(name) values ( '三國演義')")
    # 更新語句
    cursor.execute("update drug_text set name='aa' where id=4")
    # 刪除語句
    cursor.execute("delete from drug_text where id=2")
    # 查新語句
    cursor.execute("select * from drug_text")
    rows = cursor.fetchall()
    print('rows', rows)
    return HttpResponse("插入成功")

  


免責聲明!

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



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