你們好,我是言淦,我今天帶來的文章是《Django1-配置MySQL數據庫》,但願能給大家帶來幫助!python
環境: Django 2.2.1 + Python 3.6.7mysql
Dj支持PostgreSQL, MySQL, Oracle 和 SQLite 等數據庫,如今以MySQL來配置舉例。sql
文檔說到, Dj要想與其餘數據庫鏈接,一是要安裝數據庫API驅動,二是要有一個適配器,讓ORM框架和數據庫API驅動二者互相轉化。shell
數據庫API驅動提到的有兩種,一是 mysqlclient(1.3.13及以上),這是推薦的方式,由於Dj已經自帶了mysqlclient的適配器; 二是MySQL Connector/Python, 這種方式須要使用本身的適配器。數據庫
pip install mysqlclient==1.3.14
複製代碼
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,
}
}
複製代碼
$ python manage.py startapp sqltestdjango
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)
複製代碼
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'
複製代碼
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))
複製代碼
from django.conf.urls import url
from sqltest import views
urlpatterns = [
url(r'^sqltest/', views.sql_test_index)
]
複製代碼
INSTALLED_APPS = [
'django.contrib.admin',
...
# 你本身的應用
'sqltest.apps.SqltestConfig'
]
複製代碼
$ python manage.py runserverjson
注: 若是打算使用Dj的manage.py migrate 命令爲您的模型自動建立數據庫表(在首次安裝Django並建立項目以後),您須要確保Django有權在您正在使用的數據庫中建立和更改表。bash