scrapy mysql测试连接_scrapy连接MySQL
Scrapy中連接MySQL所需要做的工作如下:
1.settings中需要設(shè)置的部分
#啟動(dòng)管道組件
ITEM_PIPELINES ={‘QianChengWuYu.mongoDBPiplelines.MongoDBPipline‘: 300,
}
#mysql的連接參數(shù)
MYSQL_DB_NAME = ‘qianchengwuyu‘MYSQL_HOST= ‘localhost‘MYSQL_USER= ‘‘MYSQL_PASSWORD= ‘‘
(1)其中ITEM_PIPELINES中設(shè)置的是QianChengWuyu項(xiàng)目中的管道文件mongoDBPiplelines中的MongoDBPipline類,優(yōu)先級(jí)是300
(2)其中MYSQL_DB_NAME 為mysql中的數(shù)據(jù)庫,MYSQL_HOST 為指定登錄的IP 這里是localhost;
以及MYSQL_USER 為數(shù)據(jù)庫用戶名,MYSQL_PASSWORD 為數(shù)據(jù)庫用戶密碼
2.scrapy中piplines文件如下:
1)正常插入,導(dǎo)入pymysql模塊
importpymysql
"""
這個(gè)類用于scrapy中數(shù)據(jù)向MYSQL數(shù)據(jù)庫中插入數(shù)據(jù)
"""classQianchengwuyuPipeline(object):defopen_spider(self, spider):
"""
該方法用于創(chuàng)建數(shù)據(jù)庫連接池對(duì)象并連接數(shù)據(jù)庫
"""
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()defclose_spider(self, spider):
"""
該方法用于數(shù)據(jù)插入以及關(guān)閉數(shù)據(jù)庫
"""
self.db_conn.commit()
self.db_conn.close()defprocess_item(self, item, spider):
self.insert_db(item)returnitemdefinsert_db(self, item):
"""
sql語句構(gòu)造方法
"""
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異步插入
"""這個(gè)類用于scrapy中數(shù)據(jù)向MYSQL數(shù)據(jù)庫中異步插入數(shù)據(jù)"""
from twisted.enterprise importadbapiclassMySQLsyncPipeline(object):defopen_spider(self, spider):"""該方法用于創(chuàng)建數(shù)據(jù)庫連接池對(duì)象并連接數(shù)據(jù)庫"""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‘)defclose_spider(self, spider):"""該方法用于數(shù)據(jù)插入完成后關(guān)閉數(shù)據(jù)庫"""self.dbpool.close()defprocess_item(self, item, spider):"""插入數(shù)據(jù)庫方法"""self.dbpool.runInteraction(self.insert_db, item)returnitemdefinsert_db(self, tx, item):"""sql語句構(gòu)造方法"""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)
原文:https://www.cnblogs.com/llssx/p/9082276.html
總結(jié)
以上是生活随笔為你收集整理的scrapy mysql测试连接_scrapy连接MySQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kodi android 键盘,KODI
- 下一篇: 作为神经网络的输入_MATLAB实战|基