Django中使用mysql数据库并使用原生sql语句操作 - 守护式等待

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 )
    # 删除语句
    cursor.execute("delete from drug_text where )
    # 查新语句
    cursor.execute("select * from drug_text")
    rows = cursor.fetchall()
    print(\'rows\', rows)
    return HttpResponse("插入成功")

  

发表于 2018-12-28 13:38 守护式等待 阅读(1734) 评论(0) 编辑收藏举报