大家好,我是言淦,我今天带来的文章是《Django1-配置MySQL数据库》,希望能给你们带来帮助!
环境: Django 2.2.1 + Python 3.6.7
Dj支持PostgreSQL, MySQL, Oracle 和 SQLite 等数据库,现在以MySQL来配置举例。
1.安装数据库驱动
文档说到, Dj要想与其他数据库连接,一是要安装数据库API驱动,二是要有一个适配器,让ORM框架和数据库API驱动两者互相转化。
数据库API驱动提到的有两种,一是 mysqlclient(1.3.13及以上),这是推荐的方式,因为Dj已经自带了mysqlclient的适配器; 二是MySQL Connector/Python, 这种方式需要使用自己的适配器。
pip install mysqlclient==1.3.14复制代码
2.在settings.py设置变量
DEFAULT_USER = 'root'DEFAULT_HOST = '127.0.0.1'DEFAULT_PORT = '3306'DEFAULT_PSW = 'root'DATABASES = { 'default': { # Dj自带的适配器 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', # 数据库名 'USER': DEFAULT_USER, 'PASSWORD': DEFAULT_PSW, 'HOST': DEFAULT_HOST, 'PORT': DEFAULT_PORT, }}复制代码
3.创建一个应用
$ python manage.py startapp sqltest
4.创建表
mysql> describe stu_grade;+---------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------+---------+------+-----+---------+-------+| stu_id | int(11) | NO | PRI | NULL | || chinese | int(11) | YES | | NULL | || math | int(11) | YES | | NULL | || en | int(11) | YES | | NULL | |+---------+---------+------+-----+---------+-------+4 rows in set (0.00 sec)复制代码
5.编写Model
from django.db import modelsclass StuGrade(models.Model): stu_id = models.IntegerField(primary_key=True) chinese = models.IntegerField() math = models.IntegerField() en = models.IntegerField() class Meta: db_table = 'stu_grade'复制代码
6.编写视图函数(sqltest/views.py)
import jsonfrom django.http import HttpResponsefrom sqltest.models import StuGradedef sql_test_index(request): data = StuGrade.objects.all() resp = {} for d in data: resp.update({ 'stu_id': d.stu_id, 'chinese': d.chinese, 'math': d.math}) return HttpResponse(json.dumps(resp))复制代码
7.配置URL
from django.conf.urls import urlfrom sqltest import viewsurlpatterns = [ url(r'^sqltest/', views.sql_test_index)]复制代码
8.再次配置settings
INSTALLED_APPS = [ 'django.contrib.admin', ... # 你自己的应用 'sqltest.apps.SqltestConfig']复制代码
9.启动
$ python manage.py runserver
注: 如果打算使用Dj的manage.py migrate 命令为您的模型自动创建数据库表(在首次安装Django并创建项目之后),您需要确保Django有权在您正在使用的数据库中创建和更改表。