溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

item 數(shù)據(jù)model保存到數(shù)據(jù)庫(kù)中

發(fā)布時(shí)間:2020-08-15 01:25:12 來(lái)源:ITPUB博客 閱讀:182 作者:Winter 欄目:編程語(yǔ)言

1.如何將item 數(shù)據(jù)model保存到數(shù)據(jù)庫(kù)中

  • 首先在本地創(chuàng)建好MySQL數(shù)據(jù)庫(kù),再數(shù)據(jù)庫(kù)中創(chuàng)建好數(shù)據(jù)表

# 創(chuàng)建數(shù)據(jù)庫(kù)
create database item_database;
set global validate_password_length = 1;
set global validate_password_policy = 0;
grant all on item_database.* to 'xkd'@'%' identified by '123456';
flush privileges;
# 根據(jù)item創(chuàng)建數(shù)據(jù)表
create table item (title varchar(255) not null, image_url varchar(255) not null, date date not null, image_path varchar(255) not null, url varchar(255) not null, url_id char(50) not null primary key);

2. 安裝Python MySQL驅(qū)動(dòng)


pip install mysqlclient

3. 在settings文件中修改pipeline

  • 然后爬取頁(yè)面,進(jìn)行頁(yè)面解析,返回item交由settings.py文件中定義好的pipelines處理

ITEM_PIPELINES = {
   # 'XKD_Dribbble_Spider.pipelines.XkdDribbbleSpiderPipeline': 300,
   # 當(dāng)items.py模塊yield之后,默認(rèn)就是下載image_url的頁(yè)面
   'XKD_Dribbble_Spider.pipelines.ImagePipeline': 1,
   'XKD_Dribbble_Spider.pipelines.MysqlPipeline': 2,
}

4. 新建pipeline,寫入item到MySQL中

  • 接著在pipelines.py文件中新建一個(gè)新的pipelines類,如MysqlPipeline,在這個(gè)類中初始化數(shù)據(jù)庫(kù)連接,重寫 process_item() 方法將item的字段讀取出來(lái),再提交到數(shù)據(jù)中表中; 最后運(yùn)行項(xiàng)目成功后,可以使用命令行工具查看數(shù)據(jù)是否插入成功;

class MysqlPipeline:
    def __init__(self):
        self.conn = MySQLdb.connect(host='localhost', user='xkd', password='123456', database='item_database', use_unicode=True, charset='utf8')
        self.cursor = self.conn.cursor()
    def process_item(self, item, spider):
        sql = 'insert into item(title, image_url, date, image_path, url, url_id)' \
              'values (%s, %s, %s, %s, %s, %s)'
        date = item['date']
        self.cursor.execute(sql, args=(item['title'], item['image_url'], date.strftime('%y-%m-%d'), item['image_path'], item['url'], item['url_id']))
        self.conn.commit()
        return item
    def spider_closed(self, spider):
        self.cursor.close()
        self.conn.close()

5.在本地搭建MySQL數(shù)據(jù)庫(kù)的步驟

  • 先創(chuàng)建數(shù)據(jù)庫(kù): create database 數(shù)據(jù)庫(kù)名;

  • 然后給用戶授權(quán): grant all on 數(shù)據(jù)庫(kù)名.* to '用戶名'@'%' identified by '密碼';

  • 記得刷新MySQL的系統(tǒng)權(quán)限相關(guān)表: flush privileges;

  • 在進(jìn)入創(chuàng)建好的數(shù)據(jù)庫(kù)根據(jù)item創(chuàng)建數(shù)據(jù)庫(kù)表: create table item(字段);

6.查看數(shù)據(jù)庫(kù)表

  • 首先登錄MySQL數(shù)據(jù)庫(kù),命令行: mysql -u用戶名 -p密碼;

  • 然后選擇我們創(chuàng)建的數(shù)據(jù)庫(kù),命令行: use 數(shù)據(jù)庫(kù)名;

  • 然后就可以查看數(shù)據(jù)庫(kù)表是否成功插入數(shù)據(jù),命令行: select * from item;

  • 當(dāng)數(shù)據(jù)庫(kù)表中數(shù)據(jù)很多的時(shí)候,我們可以在查詢語(yǔ)句末尾加入一個(gè) \G 參數(shù),橫向的表結(jié)構(gòu)會(huì)轉(zhuǎn)為使用縱向表結(jié)構(gòu)輸出,利于閱讀;

參考: https://www.9xkd.com/user/plan-view.html?id=1693196261

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI