Django-Scrapy生成后端json接口 (2)

image-20200904181342156

import pymysql pymysql.install_as_MySQLdb()

对应前面的item,在spider中编写时按照model设置的即可;;

from django.db import models # Create your models here. #定义app51的数据模型 class app51data(models.Model): #发布时间,长度20 Releasetime = models.CharField(max_length=20) #职位名,长度50 job_name =models.CharField(max_length=50) #薪水 salary = models.CharField(max_length=20) #工作地点 site = models.CharField(max_length=50) #学历水平 education = models.CharField(max_length=20) #公司名称 company_name = models.CharField(max_length=50) #工作经验 Workexperience = models.CharField(max_length=20) #指定表名 class Meta: db_table = 'jobsql51' def __str__(self): return self.job_name

当指定完表名后,在DBMS中只需要创建对应的数据库即可,表名自动创建

每次修改数据库都要进行以下命令:

python manage.py makemigrations python manage.py migrate

到此mysql数据库配置完成

配置数据库时遇到的错误: Django启动报错:AttributeError: 'str' object has no attribute 'decode'

解决方法:

找到Django安装目录

G:\env\django_job\Lib\site-packages\django\db\backends\mysql\operations.py

编辑operations.py;

将146行的decode修改成encode

def last_executed_query(self, cursor, sql, params): # With MySQLdb, cursor objects have an (undocumented) "_executed" # attribute where the exact query sent to the database is saved. # See MySQLdb/cursors.py in the source distribution. query = getattr(cursor, '_executed', None) if query is not None: #query = query.decode(errors='replace') uery = query.encode(errors='replace') return query django配置:

关于django的基础配置,如路由,app的注册等基础用法,暂时不过多说明;

以下主要关于APP中视图的配置,生成json;

from django.shortcuts import render from django.http import HttpResponse # Create your views here. #引入数据 from .models import app51data import json def index(request): # return HttpResponse("hello world") # return render(request,'index.html') #获取所有的对象,转换成json格式 data =app51data.objects.all() list3 = [] i = 1 for var in data: data = {} data['id'] = i data['Releasetime'] = var.Releasetime data['job_name'] = var.job_name data['salary'] = var.salary data['site'] = var.site data['education'] = var.education data['company_name'] = var.company_name data['Workexperience'] = var.Workexperience list3.append(data) i += 1 # a = json.dumps(data) # b = json.dumps(list2) # 将集合或字典转换成json 对象 c = json.dumps(list3) return HttpResponse(c) 实现效果:

image-20201002162236215

完整代码在GitHub中,希望随手star,感谢!

如果有问题欢迎留言,日常在线。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjgfy.html