Django1-配置MySQL数据库

586 阅读1分钟

大家好,我是言淦,我今天带来的文章是《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 models

class 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 json
from django.http import HttpResponse
from sqltest.models import StuGrade

def 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 url
from sqltest import views

urlpatterns = [
    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有权在您正在使用的数据库中创建和更改表。

参考

docs.djangoproject.com/zh-hans/2.2…