根据博客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