Scrapy --异步插入数据库
程序员文章站
2022-03-03 07:52:47
...
- 在settings中**管道、设置数据库参数
- 导入twisted的异步插入数据库的模块
from twisted.enterprise import adbapi
from chufang.items import ChufangUserItem, ChufangMenuItem, ChufangTagsItem
import scrapy, pymysql
class ChufangPipeline(object):
def __init__(self, dbpool):
self.dbpool = dbpool
@classmethod
def from_crawler(cls, cralwer):
db_parmars = {
'host': cralwer.settings['MYSQL_HOST'],
'user': cralwer.settings['MYSQL_USER'],
'passwd': cralwer.settings['MYSQL_PWD'],
'db': cralwer.settings['MYSQL_DB'],
'port': cralwer.settings['MYSQL_PORT'],
'charset': cralwer.settings['MYSQL_CHARSET']
}
dbpool = adbapi.ConnectionPool('pymysql', **db_parmars)
return cls(dbpool)
def process_item(self, item, spider):
query = self.dbpool.runInteraction(
self.insert_data_to_mysql,
item
)
query.addErrback(
self.insert_err,
item
)
return item
def insert_data_to_mysql(self, cursor, item):
data_dict = dict(item)
sql, data = item.get_insert_sql_data(data_dict)
cursor.execute(sql, data)
def insert_err(self, failure, item):
print(failure, '失败', item)
推荐阅读
-
C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)
-
sqlserver数据库批量插入-SqlBulkCopy
-
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
-
C#实现异步连接Sql Server数据库的方法
-
new Date插入mysql数据库时多了一秒
-
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
-
Oracle跨数据库查询并插入实现原理及代码
-
python使用adbapi实现MySQL数据库的异步存储
-
数据库批量sql插入语句动态获取最新自增id问题如何解决?
-
向Oracle数据库的CLOB属性插入数据报字符串过长错误