Scrapy中连接MySQL所需要做的工作如下:

1.settings中需要设置的部分

# 启动管道组件
ITEM_PIPELINES = {
'QianChengWuYu.mongoDBPiplelines.MongoDBPipline': 300,
}
# mysql的连接参数
MYSQL_DB_NAME = 'qianchengwuyu'
MYSQL_HOST = 'localhost'
MYSQL_USER = ''
MYSQL_PASSWORD = ''

(1)其中ITEM_PIPELINES中设置的是QianChengWuyu项目中的管道文件mongoDBPiplelines中的MongoDBPipline类,优先级是300

(2)其中MYSQL_DB_NAME 为mysql中的数据库,MYSQL_HOST 为指定登录的IP 这里是localhost;

以及MYSQL_USER 为数据库用户名,MYSQL_PASSWORD 为数据库用户密码

2.scrapy中piplines文件如下:

1)正常插入,导入pymysql模块

import pymysql

"""
这个类用于scrapy中数据向MYSQL数据库中插入数据
"""
class QianchengwuyuPipeline(object): def open_spider(self, spider):
        """
        该方法用于创建数据库连接池对象并连接数据库
        """
db = spider.settings.get('MYSQL_DB_NAME', 'scrapy_default')
host = spider.settings.get('MYSQL_HOST', 'localhost')
port = spider.settings.get('MYSQL_PORT', 3306)
user = spider.settings.get('MYSQL_USER', 'root')
passwd = spider.settings.get('MYSQL_PASSWORD', 'root') self.db_conn = pymysql.connect(host=host, port=port, db=db, user=user, passwd=passwd, charset='utf8')
self.db_cur = self.db_conn.cursor() def close_spider(self, spider):
        """
        该方法用于数据插入以及关闭数据库
        """
self.db_conn.commit()
self.db_conn.close() def process_item(self, item, spider):
self.insert_db(item) return item def insert_db(self, item):
        """
        sql语句构造方法
        """
values =(
item['job'],
item['company'],
item['place'],
item['salary']
) sql = 'INSERT INTO jobs(job,company,place,salary) VALUES(%s,%s,%s,%s)'
self.db_cur.execute(sql, values)

2)异步插入,使用twisted异步插入

"""
这个类用于scrapy中数据向MYSQL数据库中异步插入数据
"""
from twisted.enterprise import adbapi class MySQLsyncPipeline(object): def open_spider(self, spider):
"""
该方法用于创建数据库连接池对象并连接数据库
"""
db = spider.settings.get('MYSQL_DB_NAME', 'scrapy_default')
host = spider.settings.get('MYSQL_HOST', 'localhost')
port = spider.settings.get('MYSQL_PORT', 3306)
user = spider.settings.get('MYSQL_USER', 'root')
passwd = spider.settings.get('MYSQL_PASSWORD', 'root') self.dbpool = adbapi.ConnectionPool('pymysql', host=host, db=db, user=user, password=passwd, charset='utf8') def close_spider(self, spider):
"""
该方法用于数据插入完成后关闭数据库
"""
self.dbpool.close() def process_item(self, item, spider):
"""
插入数据库方法
"""
self.dbpool.runInteraction(self.insert_db, item) return item def insert_db(self, tx, item):
"""
sql语句构造方法
"""
values = (
item['job'],
item['company'],
item['place'],
item['salary']
) sql = 'INSERT INTO jobs(job, company, place,salary) VALUES(%s,%s,%s,%s)'
tx.execute(sql, values)

scrapy连接MySQL的更多相关文章

  1. Scrapy连接到各类数据库(SQLite,Mysql,Mongodb,Redis)

    如何使用scrapy连接到(SQLite,Mysql,Mongodb,Redis)数据库,并把爬取的数据存储到相应的数据库中. 一.SQLite 1.修改pipelines.py文件加入如下代码 # ...

  2. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  3. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

  4. Node.js Express连接mysql完整的登陆注册系统(windows)

    windows学习环境: node 版本: v0.10.35 express版本:4.10.0 mysql版本:5.6.21-log 第一部分:安装node .Express(win8系统 需要&qu ...

  5. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  6. 使用ABP EntityFramework连接MySQL数据库

    ASP.NET Boilerplate(简称ABP)是在.Net平台下一个很流行的DDD框架,该框架已经为我们提供了大量的函数,非常方便与搭建企业应用. 关于这个框架的介绍我就不多说,有兴趣的可以参见 ...

  7. jmeter之连接mysql和SQL Server配置

    下载jdbc驱动 在使用jmeter做性能或自动化测试的时候,往往需要直接对数据库施加压力,或者某些参数只能从数据库获取,这时候就必须使用jmeter连接数据库. 1.下载对应的驱动包 mysql驱动 ...

  8. Windows操作系统下远程连接MySQL数据库

    用Eclipse做一个后台项目,但是数据库不想放在本地电脑,于是买了一个腾讯云服务器(学生有优惠,挺便宜的),装上MySQL数据库,但是测试连接的时候,发现总是连接不是上,但是本地数据库可以连接,于是 ...

  9. Hibernate连接mysql数据库的配置

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

随机推荐

  1. Linux 下启动两个tomcat

    Linux 下启动两个tomcat 闲来无事学习nginx,想要配置个load balance.可是先决条件是:得有两个web容器.两个电脑是不用想了.只能想办法在一个机器上启动两个tomcat.原以 ...

  2. 一款比较好用的JS时间控件-laydate

      官方讲解:http://laydate.layui.com/ 具体的内容请看官方讲解,此处仅说名应用: 1.在jsp或html或其他中引入laydate.js <script src=&qu ...

  3. SUSE制作ISO源

    These commands have been tested on openSUSE 11. First create a directory where you will store your I ...

  4. 修改字符集AL32UTF8修改为ZHS16GBK详解

    登陆sqlplus,在命令行输入 sqlplus sys/sys as sysdba;//登陆sqlplus SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP MOU ...

  5. [JAVA] 小数转百分数

    import java.text.NumberFormat; //获取格式化对象 NumberFormat format = NumberFormat.getPercentInstance(); // ...

  6. IntelliJ IDEA开发golang环境配置

    IntelliJ IDEA开发golang环境配置 首先把GO安装好...(自行安装,附上一篇我之前写的MAC安装GO) 安装IntelliJ IDEA,下载地址: https://www.jetbr ...

  7. 实践作业4:Web测试实践(小组作业)每日任务记录4

    昨天周日平安夜,给大家都放了假,故昨日博客未更新,今天回复博客更新. (一)今日任务更新 编号 人员 任务更新 1 侯欢 已经完成了对两个网站基本功能的分析,已形成基本功能分析报告. 2 余晨晨 上次 ...

  8. PHP json_encode中文unicode转码问题

    用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如果想汉字不进行转码,这里提供三种方法 1.升级PHP,在PHP5.4, 这个问题终于得 ...

  9. 3.1.7 线程阻塞工具类:LockSupport

    package 第三章.线程阻塞工具LockSupport; import java.util.concurrent.locks.LockSupport; /** * Created by zzq o ...

  10. 3.1.2 condition 条件

    package 第三章.重入锁; import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Reent ...