1.twisted框架介绍
扭曲的是用计算机编程语言实现的基于事件驱动的网络引擎框架;
扭曲的支持许多常见的传输及应用层协议,包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。就像计算机编程语言一样,扭曲也具有"内置池"(含电池)的特点扭曲了。对于其支持的所有协议都带有客户端和服务器实现,同时附带有基于命令行的工具,使得配置和部署产品级的扭曲的应用变得非常方便。
2.MySQL数据库信息保存到settings文件中
首先我们需要把关系型数据库数据库中的配置信息保存到设置文件中,如:MYSQL_HOST='localhost '的形式;
MYSQL_HOST='localhost '
MYSQL_USER='xkd '
MYSQL_PASSWORD='123456 '
MYSQL_DATAB异步ASE='item_database异步电动机的调速方法 '
MYSQL_PORT=3306
MYSQL _ OPTIONAL=字异步电机与同步电机的区别典(
USE_UNICODE=数据漫游Tru异步社区e,
CHARSET='utf8 ',
)
然后从设置文件中将这些信息导入到管道。巴拉圭文件中使用;
from.settingsimportMYSQL_HOST,MYSQL_异步传输USER,MYSQL_PASSWORD,MYSQL_DATABASE,框架图MYSQL_PORT,MYSQL_OPTIONAL
classMysqlPipeline:
def__init__(self):
自我。co数据库nn=mysqldb。connect(HOST=MYSQL _ HOST,user=MYSQL_USER,password=MYSQL_PASSWtwister是什么意思ORD,database=MYSQL_DATtwisted歌曲ABASE,USE _ UNICODE=MYSQL _ optional。get(' USE _ UNICODE '),CHARSET=MYSQL _ optional。get(' CHARSET '))
self.cur异步传输sor=self.conn.cursor()
defptwistedrocess_item(自身、项目、蜘蛛):
sql='insertintoitem(标题,图像url数据漫游,日期,图像路径,url,URL id)'
值(%s,%s,%s,%s,%s,%s),''
日期=项目['日期]
self.cursor.execute(sql,args=(项目['标题'],项目['image_url'],日期,项目['图像路径'],项目['url'],项目['url_id']))
self.conn.commit()
返回项目
defspider_closed(self,spider):
self.cur写入党章的指导思想sor.clos写入团申请书e()
self.co写入党申请书的格式nn.close()
3.twisted翻译创建异步Pipeline写入数据库
首先创建一个用于异步写入数据的AIOMysqlItemPipeline类,然后在这个类的初始化写入党申请书的纸有要求吗方法中创建一个泳池连接池;
然后在来自设置()方法中获取设置文件中的数据库配置信息,并将配置信息存入一个字典中。twisted翻译使用扭曲的中的adbapi获取数据库连接池对象,使用前需要导入adbapi,如:从扭曲的企异步通信业导入adbapi。使用时需要用到连接池连接池:pool=adbatwister翻译pi .连接池(' MySQ异步社区Ldb ',**params),参数转载是使用的数据库引擎的名字,参数就是要传递的数据库配置信息;
接着在流程项目()方法中使用数据库连接池对象进行数据库操作,自动传递光标对象到数据库操作方法运行交互()的第一个参数(自定义方法)如:ret=self。连接_池。运行交互(自数据漫游是什么意思我。MySQL _ insert,item);
还可以设置出错时的回调方法,自动传递出错消息对象失败到错误处理方法的第一个参数(自定义方法)如:ret。adderrback(self。错误_回调);
最后记得修改设置文件中的项目_管道配置,如:' XKD _运球_蜘蛛。管道。aiomysqlitempileline ' : 2;
从扭曲。enterpriseim写入党申请书的纸有要求吗portada数据分析师pi
importMySQLdb.cursors
class写入党章的会议是AIOMys数据废土qlItemPipeline:
def__异步传输init__(自身,池):
self.connection _ pool=池
#1:调用类方法
@classmethod
deffrom异步社区_twisted翻译settings(cls,settings):
connkw={
主机:MYtwisted歌曲SQL_HOST,
用户:MYSQL_USER,
密码:MYSQL_PASSWORD异步,
db':MYSQL_DATABASE,
端口:MYSQL_POR写入党申请书的格式T,
USE _ UNICODE ' : my SQL _ optional。get(' USE _ UNICODE '),
CHARSET ' : my SQL _ optional。get(' CHARSET '),
游标类' : mysqldb。光标。字典光标,
}
pool=adbapi .连接twisters池(' MySQLdb ',**connkw)
returncls(池)
#2:执行流程_项目
defprocess_item(自身、项目、蜘蛛):
ret=self。连接_池。运行交互(自我。My框架结构的优缺点SQL _ insert,item)
ret。adderrb框架剪力墙ack(self。错误_回调)
defmysql_insert(self,cursor,item):
sql='insertintoitem(标题,图像url,日期,图像路框架梁径,url,URL id)'
值(%s,%s,%s,%s,%s,%s),''
日期=项目['日期]
cursor.execut写入文件时出错e(sql,args=(项目['标题'],项目['image_url'],日期,项目['图像路径'],项目['url'],项目['url_id']))
deferrer _ c写入文件时出错allback(self,error):
print(' insert _ error============{ } ' .格式(错误))twisted翻译
修改设置文件
ITEM_PIPELINES={
# ' XKD _ Dribbble _ spider。管道。xkddribbblespiderpipeline ' :3异步清零00,
#当items.py模块产量之后,默认就是下载图像_url的页面
XKD _运球_蜘蛛。管道。写入团申请书图像管线‘:1,
XKD _ Dri异步bb写入党申请书的纸有要求吗ble _ spider。管道。a写入党章iomysqlitempileline ' :2,
}