zoukankan      html  css  js  c++  java
  • 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("插入成功")
    

      

  • 相关阅读:
    OpenCV 入门示例之三:AVI 视频播放控制
    CSS3 图标神器 => content:"我是特殊符号"
    【angular5项目积累总结】优秀组件以及应用实例
    基于angular2+ 的 http服务封装
    【angular5项目积累总结】遇到的一些问题以及解决办法
    【angular5项目积累总结】panel组件
    【angular5项目积累总结】http请求服务封装
    【angular5项目积累总结】消息订阅服务
    【angular5项目积累总结】表单复杂校验
    【angular5项目积累总结】列表多选样式框(2)
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/10190062.html
Copyright © 2011-2022 走看看