scrapy连接MySQL
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的更多相关文章
- Scrapy连接到各类数据库(SQLite,Mysql,Mongodb,Redis)
如何使用scrapy连接到(SQLite,Mysql,Mongodb,Redis)数据库,并把爬取的数据存储到相应的数据库中. 一.SQLite 1.修改pipelines.py文件加入如下代码 # ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- 【初学python】使用python连接mysql数据查询结果并显示
因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...
- Node.js Express连接mysql完整的登陆注册系统(windows)
windows学习环境: node 版本: v0.10.35 express版本:4.10.0 mysql版本:5.6.21-log 第一部分:安装node .Express(win8系统 需要&qu ...
- PDO连接mysql数据库
1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...
- 使用ABP EntityFramework连接MySQL数据库
ASP.NET Boilerplate(简称ABP)是在.Net平台下一个很流行的DDD框架,该框架已经为我们提供了大量的函数,非常方便与搭建企业应用. 关于这个框架的介绍我就不多说,有兴趣的可以参见 ...
- jmeter之连接mysql和SQL Server配置
下载jdbc驱动 在使用jmeter做性能或自动化测试的时候,往往需要直接对数据库施加压力,或者某些参数只能从数据库获取,这时候就必须使用jmeter连接数据库. 1.下载对应的驱动包 mysql驱动 ...
- Windows操作系统下远程连接MySQL数据库
用Eclipse做一个后台项目,但是数据库不想放在本地电脑,于是买了一个腾讯云服务器(学生有优惠,挺便宜的),装上MySQL数据库,但是测试连接的时候,发现总是连接不是上,但是本地数据库可以连接,于是 ...
- Hibernate连接mysql数据库的配置
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...
随机推荐
- 由Strurts2漏洞引开谈谈web代码安全问题
漏洞与补丁齐飞,蓝屏共死机一色. 最近struts2的安全漏洞影响面甚广,此后门为可以在url中直接远程调用脚本的漏洞和一个重定向漏洞.大家可以在s2-016远程执行脚本漏洞和s2-017重定向开放漏 ...
- zabbix自动发现监控mysql
一. 数据库给只读权限 1.1 grant usage on *.* to 'zabbix'@'127.0.0.1' identified by 'zabbix'; flush privileges; ...
- 由浅到深理解ROS(5)- launch启动文件的理解与编写
ROS提供了一个同时启动节点管理器(master)和多个节点的途径,即使用启动文件(launch file).事实上,在ROS功能包中,启动文件的使用是非常普遍的.任何包含两个或两个以上节点的系统都可 ...
- RabbitMQ EasyNetq 用法
EasyNETQ帮助类 public class MQHelper { /// <summary> /// 发送消息 /// </summary> public static ...
- [C++] How to prevent memory leaks
How to prevent memory leaks ? overload new/delete
- requests对象
属性 0.HttpRequest.scheme 表示请求方案的字符串(通常为http或https) 1.HttpRequest.body 一个字符串,代表请求报文的主体.在处理非 HTTP 形式的报文 ...
- IDEA设置与快捷键记录
一:代码提示大小写设置 二:设置代码检查等级 IntelliJ IDEA 对于编辑大文件并没有太大优势,很卡,原因就是它有各种检查,这样是非常耗内存和 CPU 的,所以为了能加快大文件的读写,我一般会 ...
- 使用jQuery 取文本
<html> <head> <meta charset="UTF-8"> <title>b</title> <sc ...
- python 函数星号参数说明
转自: python 函数参数的传递(参数带星号的说明) python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何 ...
- xfce4快捷键设置
xfce4的"Keyboard"可以方便的设置启动应用程序的快捷键. 例如,添加xfce4-terminal和emacs的启动快捷键 Alt+F3打开"Applicati ...