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中的代码。刷新数据库可以看到
Django中使用mysql数据库并使用原生sql语句操作_第1张图片
信息已经插入进去了。
我们也可以查询数据库里面的数据,修改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

你可能感兴趣的:(django)