大家好,我是言淦,我今天带来的文章是《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有权在您正在使用的数据库中创建和更改表。