python测试开发django(8)--django连接mysql
前言
Django对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。本篇以mysql为例简单介绍django连接mysql进行数据操作
Django连mysql需要安装驱动mysqlclient
mysqlclient安装
先要安装数据库驱动mysqlclient,使用pip安装就行
pip install mysqlclient

django配置数据库
settings.py文件中找到DATABASES配置项,django默认连接sqllite。ENGINE:是指连接数据库驱动的名称,有以下几种情况:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
- django.db.backends.postgresql 连接PostgreSQL
- django.db.backends.mysql 连接mysql
- django.db.bacckends.sqlite3 连接sqlite
- django.db.backends.oracle 连接oracle
这里我们连接mysql需要账户密码,也就是之前安装mysql的root用户名,和自己设置的密码,NAME是数据库的名称(数据库名称可随意命名,如,django1需要提前新建好该数据库);
注意:Django2.1不再支持MySQL5.5,必须5.6版本以上
连接配置如下:
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME':'django1',
'USER':'root',
'PASSWORD':'123456',
'HOST':'localhost',
'PORT':'3306',
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
创建表,同步到mysql
类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则有CharField(相当于varchar)、DateField(相当于datetime),max_length参数限定长度。
#models.py
from django.db import models
# Create your models here.
class Django1(models.Model):
name = models.CharField(max_length=20)
先创建表结构,在数据库里面新建一些表;(备注:第一次执行下面的命令,无xjyn...的那一行,删除数据库,再执行一次,显示改行)
python manage.py migrate

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

接着让Django知道我们在我们的模型有一些变更;
python manage.py makemigrations xjyn

再创建xjyn这个app应用的表结构
python manage.py migrate xjyn

操作数据库
在settings.py同一目录新建一个dbtest.py文件
# coding:utf-8
from django.http import HttpResponse
from xjyn.models import Django1
#数据库操作
def dbtest(requst):
test=Django1(name="hui")
test.save()
return HttpResponse("数据库xjyn_django1添加name成功!")
urls.py配置访问地址
#helloworld/helloworld/urls.py
from django.conf.urls import url
from django.urls import re_path,path
from . import dbtest
urlpatterns=[
url("^test/$",dbtest.dbtest),
]
浏览器打开:http://127.0.0.1:8000/test/,访问一次,数据库里面就会新增一条数据;

查看数据库xjyn_django1会新增数据;

浙公网安备 33010602011771号