Redis 分布式爬虫设置,Django连接网络数据库以及使用models操作已经存在的表的基础设置

本文介绍了如何启动Redis服务,包括修改配置文件以允许远程连接,并展示了使用Django配置连接远程MySQL数据库的步骤。此外,还详细讲解了Django项目中如何操作已存在的数据库表,包括创建数据库、设置权限、进行数据库迁移以及处理可能出现的模型与数据库同步问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动redis

远程连接配置信息

redis.windows.conf 文件

搜索(CTRL+F):protected

修改 protected-mode yes ==》protected-mode no

注释掉 bind 127.0.0.1 ==》 # bind 127.0.0.1

加入 daemonize no(这个是是否在后台启动不占用一个主程窗口)可自行决定是否添加这一个操作

保存配置文件,重启redis服务

启动操作 redis-server.exe redis.windows.conf

远程连接 :redis-cli -h host -p port -a password

  • 示例:redis-cli -h 192.168.3.2 -p 6379
命令解释
keys *查询所有数据表
type key查看表中存储数据的类型
smembers key获得集合中的所有元素
flushall删除所有
setting
DOWNLOAD_DELAY = 3

# 指定使用scrapy-redis的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# 指定使用scrapy-redis的去重
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'

# 指定排序爬取地址时使用的队列,
# 默认的 按优先级排序(Scrapy默认),由sorted set实现的一种非FIFO、LIFO方式。
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderPriorityQueue'
# 可选的 按先进先出排序(FIFO)
# SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderQueue'
# 可选的 按后进先出排序(LIFO)
# SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderStack'

# 在redis中保持scrapy-redis用到的各个队列,从而允许暂停和暂停后恢复,也就是不清理redis queues
SCHEDULER_PERSIST = True

# 只在使用SpiderQueue或者SpiderStack是有效的参数,指定爬虫关闭的最大间隔时间
# SCHEDULER_IDLE_BEFORE_CLOSE = 10

# 通过配置RedisPipeline将item写入key为 spider.name : items 的redis的list中,供后面的分布式处理item
# 这个已经由 scrapy-redis 实现,不需要我们写代码
ITEM_PIPELINES = {
    # 'example.pipelines.ExamplePipeline': 300,
    'scrapy_redis.pipelines.RedisPipeline': 400
}

# 指定redis数据库的连接参数
REDIS_HOST = '10.8.152.26'
REDIS_PORT = 6379


# LOG等级
LOG_LEVEL = 'DEBUG'

#默认情况下,RFPDupeFilter只记录第一个重复请求。将DUPEFILTER_DEBUG设置为True会记录所有重复的请求。
DUPEFILTER_DEBUG =True

# 覆盖默认请求头,可以自己编写Downloader Middlewares设置代理和UserAgent
DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8',
    'Connection': 'keep-alive',
    'Accept-Encoding': 'gzip, deflate, sdch'
}

sqlite3

> 建表sql
"create table IF NOT EXISTS bj_chaoyang(id integer primary key autoincrement, rent char(50), model char(50), area char(50),pay char(50), community char(50), floor char(50),toward char(50), decorate char(50), type_floor char(50),heating char(50), rent_way char(50), business char(50), subway char(50));"

> 插入sql
"INSERT INTO bj_chaoyang(rent, model, area, pay, community, floor, toward, decorate, type_floor, heating, rent_way, business, subway) VALUES ('{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}')".format(item['rent'],item['model'],item['area'],item['pay'],item['community'],item['floor'],item['toward'],item['decorate'],item['type_floor'],item['heating'],item['rent_way'],item['business'],item['subway'])

Project_crawl

pip3 install scrapy-redis

pip3 indtall scrapy

Project_Django

MYSQL
  • 数据库的名字 rentingDB

  • 创建数据库命令 create database rentingDB;

  • 数据库权限操作

    • 创建用户及设置权限

      grant all privileges on rentingDB.* to public_root@'%' identified by "123456";

    • 更新权限

      flush privileges;

    • 远程连接命令

      mysql -h 00.00.00.00 -P 3306 -u public_root -p

      password:1234

Django 配置MySQL数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',      # 数据库引擎
        'NAME': 'rentingDB',                       # 你要存储数据的库名,事先要创建之
        'USER': 'public_root',                     # 数据库用户名
        'PASSWORD': '123456',                      # 密码
        'HOST': '00.00.00.00',                     # 主机
        'PORT': '3306',                            # 数据库使用的端口
    }
}
数据库迁移

python3 不支持MySql,可以使用PyMySql代替

pip3 install pymysql

在项目文件夹下的_init_.py添加如下代码即可。

import pymysql
pymysql.install_as_MySQLdb()

然后在Terminal中执行数据库迁移命令:

python3 manage.py makemigrations
python3 manage.py migrate

Django 使用module.py 操作已有数据库表

针对已有数据库生成对应的models

python3 manage.py inspectdb > ./app/models.py

执行数据库迁移命令

python3 manage.py makemigrations
python3 manage.py migrate

如果遇到报错的问题需要查看是那个字段报错,一般都是主字段没有设置主键需要设置主键,或者在models中没有正常生成主键的操作,需要手动更改

id = models.IntegerField(blank=True, primary_key=True)

views.py

from django.shortcuts import render
from app.models import Tt
from django.http import HttpResponse

# Create your views here.

def test(reuqset):
    tt = Tt
    print(tt.objects.all())
    for i in tt.objects.all():
        print('*'*20+'start')
        print(i.username)
        print('*'*20+'end')

    return HttpResponse('ok')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值