【Django2x 學習筆記 05】面向api(模板使用者請跳過),操作已有資料庫的查詢、增加、修改
根據部落格https://blog.csdn.net/itas109/article/details/80898943 才知道如何查詢已有資料庫欄位。
Django官方文件https://docs.djangoproject.com/zh-hans/2.0/寫的真爛,愣是沒找到如何操作已有資料庫。給我擺個用程式碼建立資料庫表,智障!
-
基於Python3.7、Django2.1.3、win10_1809。
假設建立一個Django的web專案mysite:
$ django-admin startproject mysite
-
開啟服務 python manage.py runserver 8080
連續按 Crl+C 可以退出服務
------正文開始-------
1. 新建一個Djano模組,建立必要檔案:
1.0)cmd端敲建立一個blog模組:
$ python manage.py startapp blog
1.1)mysite目錄下的settings.py裡註冊'blog':
INSTALLED_APPS = [
。。。。。
。。。。
# 經過實驗不寫無所謂,連線資料庫才會用到
'blog',
]
1.2)mysite目錄下的settings.py裡填入資料庫資訊:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django 'NAME': 'bless', 'USER': '', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '3306', } }
1.3)mysite目錄下的urls.py註冊主路由:
from django.contrib import admin
from django.urls import include, path
from blog import views
# python manage.py runserver 8080
urlpatterns = [
path('admin/', admin.site.urls),
# blog
path('blog/', include('blog.urls')),
]
1.4)配置必要擴充套件:
$ pip install --user pymysql
在blog目錄的___init_.py填入:
import pymysql
pymysql.install_as_MySQLdb()
$ pip install --user Pillow
2)在blog目錄新建一個urls.py檔案,並填入次路由:
from django.urls import path
from . import data
urlpatterns = [
path('', data.index, name='index'),
path('show/', data.show, name='show'),
path('add/', data.add, name='add'),
path('update/', data.update, name='update'),
]
3)在blog資料夾下的models.py裡面宣告所要操作的表的引數:
from django.db import models
# Create your models here.
class Music(models.Model): # 連線資料庫中的表,並宣告資料庫欄位
# 宣告引數,可以與資料庫的最大長度不同,建議將資料庫中所有欄位都宣告
id = models.IntegerField(primary_key=True)
music_name = models.TextField(max_length=100)
music_src = models.CharField(max_length=500)
adm = models.CharField(max_length=20)
create_time = models.IntegerField(max_length=20)
class Meta:
managed = True # 管理每個表的建立,修改和刪除
db_table = 'td_music' # 表
pass
pass
資料庫結構如下(已有資料庫):
註冊models,此檔案生成在目錄migrations下:
$ python manage.py makemigrations
$ python manage.py migrate
4)在blog目錄新建一個data.py檔案,並填入資料庫的增,改,查程式碼,完成如下,操作完成後,以介面 的形式傳回引數:
from django.http import HttpResponse
from .models import Music
import json
# python manage.py runserver 8080
def index(request):
return HttpResponse('路由執行正常')
pass
def show(request): # 查詢資料
res = Music.objects.all().order_by('-id').values('music_name', 'adm')
if res:
back = {
'state': 1,
'msg': '獲取成功',
'content': list(res), # 將查詢結果陣列化
}
pass
else:
back = {
'state': 0,
'msg': '獲取失敗',
'content': '',
}
pass
return HttpResponse(json.dumps(back, ensure_ascii=False), content_type='application/json; charset=utf-8')
pass
def add(request): # 新增資料
res = Music(music_name='name3', music_src='www.1111.com/1.mp3', adm='admin1', create_time='2018').save()
back = {
'state': 1,
'msg': '新增成功',
'content': str(res),
}
return HttpResponse(json.dumps(back, ensure_ascii=False), content_type='application/json; charset=utf-8')
pass
def update(request): # 更新資料
res = Music.objects.filter(id=20).update(music_name='name20', adm='admin21')
if res == 1:
back = {
'state': 1,
'msg': '更新完成',
'content': str(res),
}
pass
else:
back = {
'state': 0,
'msg': '更新失敗',
'content': str(res),
}
pass
return HttpResponse(json.dumps(back, ensure_ascii=False), content_type='application/json; charset=utf-8')
pass
-
2. 測試執行結果:
用GET方法測一下資料查詢 http://localhost:8080/blog/show/
-
博文拓展:
連線資料庫:https://blog.csdn.net/itas109/article/details/80898943
路由編寫:https://blog.csdn.net/weixin_41827162/article/details/84500537
查詢資料:https://blog.csdn.net/Fe_cow/article/details/80669146
多表查詢,複雜查詢:https://www.cnblogs.com/yangzhizong/p/9629597.html