从零开始做直播导航网站 第六天

关键词:
database 测试

思路:
在models中创建LiveRoom表,然后将前几天的爬虫数据存入数据库

过程:

  1. 创建LiveRoom模型
#models.py
from django.db import models
class LiveRoom(models.Model):
    room_home = models.CharField(max_length=100)
    room_id = models.IntegerField()
    room_name = models.TextField()
    user_id = models.IntegerField()
    user_name = models.TextField()
    room_kind = models.TextField()
    room_url = models.TextField()
    room_kind = models.CharField(max_length=20)
    room_olnum = models.IntegerField()
    room_usertag = models.TextField()

然后

python manage.py makemigrations
python manage.py migrate
  1. 爬虫数据存入数据库
    将上一次的analysisPageJSON 修改一下
from hellodjango.models import LiveRoom
def analysisPageJSON(jsonContent):
    a=LiveRoom.objects
    for room in jsonContent['data']['rl']:
        roomid = room['rid']
        roomname = room['rn']
        userid = room['uid']
        username = room['nn']
        url = room['url']
        kind = room['c2name']
        onlineNumber = room['ol']
        userTag = room['od']
        
        a.create(room_home = 'douyu',
                 room_id = roomid,
                 room_name = roomname,
                 user_id = userid,
                 user_name = username,
                 room_kind = kind,
                 room_url = roomUrl + url,
                 room_olnum = onlineNumber,
                 room_usertag = userTag)

def getFirstPageJSON(typeIndex):
    firstPageUrl = url + str(typeIndex) + '/1'
    jsonContent = getJSONFromUrl(firstPageUrl)
    analysisPageJSON(jsonContent)
    return jsonContent['data']['pgcnt']

getFirstPageJSON(1)

运行之后出现错误


image.png
Traceback (most recent call last):
  File "D:\codes\python\mysite\hellodjango\tests.py", line 3, in <module>
    from hellodjango.douyu import douyuJSONSpider
  File "D:\codes\python\mysite\hellodjango\douyu\douyuJSONSpider.py", line 9, in <module>
    from hellodjango.models import LiveRoom
  File "D:\codes\python\mysite\hellodjango\models.py", line 4, in <module>
    class LiveRoom(models.Model):
  File "D:\software_dev\Python36\lib\site-packages\django\db\models\base.py", line 103, in __new__
    app_config = apps.get_containing_app_config(module)
  File "D:\software_dev\Python36\lib\site-packages\django\apps\registry.py", line 252, in get_containing_app_config
    self.check_apps_ready()
  File "D:\software_dev\Python36\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

查了一下,原来测试的时候django的环境并未启动,需要在使用models之前setup

import os
import django
 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
#mysite.settings  mysite是项目的名字
django.setup()

再运行就没有错误了
3 测试插入结果

import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()

from hellodjango.models import LiveRoom
a = LiveRoom.objects.all()
print(a[0].room_name)
#输出结果:晚点恰鸡  10点11点抽6W
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容