前言
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会新增数据;