python测试开发django-10.django连接mysql

Posted 上海-悠悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python测试开发django-10.django连接mysql相关的知识,希望对你有一定的参考价值。

前言

Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。本篇以mysql为例简单介绍django连接mysql进行数据操作
Django连mysql需要安装驱动mysqlclient

mysqlclient安装

先要安装数据库驱动mysqlclient,使用pip安装就行

pip install mysqlclient

   copying MySQLdb\\constants\\FLAG.py -> build\\lib.win-amd64-3.6\\MySQLdb\\constants
    copying MySQLdb\\constants\\REFRESH.py -> build\\lib.win-amd64-3.6\\MySQLdb\\constants
    running build_ext
    building \'_mysql\' extension
    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

    ----------------------------------------
Command "e:\\python36\\python.exe -u -c "import setuptools, tokenize;__file__=\'C:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Temp\\\\pip-install-trc0p4gc\\\\mysqlclient\\\\setup.py\';f=getattr(tokenize, \'open\', open)(__file__);code=f.read().replace(\'\\r\\n\', \'\\n\');f.close();exec(compile(code, __file__, \'exec\'))" install --record C:\\Users\\dell\\AppData\\Local\\Temp\\pip-record-ulwogpct\\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\\Users\\dell\\AppData\\Local\\Temp\\pip-install-trc0p4gc\\mysqlclient\\

这里我安装的时候出现了报错:“Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools” 打开报错给的地址404

解决办法,指定1.3.10版本安装

pip install mysqlclient==1.3.10

C:\\Users\\dell>pip install mysqlclient==1.3.10
Collecting mysqlclient==1.3.10
  Downloading https://files.pythonhosted.org/packages/c8/e0/e38c1fc71355bbc60e89401674bc0190f39a207f0235bb92b7e7b09948d0/mysqlclient-1.3.10-cp36-cp36m-win_amd64.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 466kB/s
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.3.10

django配置数据库

settings.py 文件中找到 DATABASES 配置项, django默认连接sqllite。ENGINE:是指连接数据库驱动的名称,有以下几种情况:

  • django.db.backends.postgresql 连接 PostgreSQL
  • django.db.backends.mysql 连接 mysql
  • django.db.backends.sqlite3 连接 sqlite
  • django.db.backends.oracle 连接 oracle

这里我们连接mysql需要账户密码,也就是之前安装mysql的root用户名,和自己设置的密码,NAME是数据库的名称,连接配置如下:

DATABASES = {
    \'default\': {
        \'ENGINE\': \'django.db.backends.mysql\',  # 或者使用 mysql.connector.django
        \'NAME\': \'test\',
        \'USER\': \'root\',
        \'PASSWORD\': \'yoyo\',
        \'HOST\':\'localhost\',
        \'PORT\':\'3306\',
    }
}

创建表,同步到mysql

类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

# models.py

from django.db import models

# Create your models here.

class Test(models.Model):
    name = models.CharField(max_length=20)

先创建表结构,在数据库里面新增一些表

python manage.py migrate

D:\\web_djo\\helloworld>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, hello, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying hello.0001_initial... OK
  Applying hello.0002_auto_20181122_1025... OK
  Applying hello.0003_auto_20181122_1033... OK
  Applying sessions.0001_initial... OK

打开数据库,会发现多了一些表名称,hello_test就是上一步新建的表

接着让 Django 知道我们在我们的模型有一些变更

python manage.py makemigrations hello

D:\\web_djo\\helloworld>python manage.py makemigrations hello
No changes detected in app \'hello\'

再创建hello这个app应用的表结构

python manage.py migrate hello

D:\\web_djo\\helloworld>python manage.py migrate hello
Operations to perform:
  Apply all migrations: hello
Running migrations:
  No migrations to apply.

操作数据库

在settings.py同一目录新建一个testdb.py文件

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from hello.models import Test

# 数据库操作
def testdb(request):
    test1 = Test(name=\'yoyo1\')
    test1.save()
    return HttpResponse("数据库hello_test添加name成功!看去看看吧")

urls.py配置访问地址

from django.conf.urls import url
from django.urls import re_path, path
from . import view, testdb

urlpatterns = [
    url(r\'^testdb$\', testdb.testdb),
]

浏览器打开:http://127.0.0.1:8000/testdb 访问一次,数据库里面就会新增一条数据

查看数据库hello_test会新增数据

django交流QQ群:779429633

以上是关于python测试开发django-10.django连接mysql的主要内容,如果未能解决你的问题,请参考以下文章

测试开发系列之Python开发mock接口

学习python 测试开发

测试开发系列之Python开发mock接口

Python 开发与接口测试学习笔记

Python:Python常用开发框架Framework(WEB测试爬虫)总结

测试开发系列之Python开发mock接口