天天看點

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

目前很多使用scrapy架構的程式員将資料儲存在MongoDB、MySql資料庫,但是很少又将資料儲存到SqlServer資料。

但是難免會有企業是使用的sqlserver資料庫儲存資料,接下來我們就将scrapy爬蟲擷取的資料儲存到sqlserver資料庫可能會遇到的一些問題呵方法整理一下。

能看到這篇文章的人,我想scrapy的基本使用已經沒什麼問題了,我們就隻說pipelines這個子產品的儲存方法。

既然是使用sqlserver資料庫,自然需要先安裝完成,我使用的是sqlserver2012,微軟官網就能直接下載下傳。(假設你已經安裝完成)

在實際爬蟲項目的環境中,如果是将資料儲存到本地的資料庫,安裝pymssql子產品,指令pip install pymssql。

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

沒裝的裝好再繼續,我這邊已經安裝完成。

接下來,我們在pipelines.py子產品中寫一個儲存資料的類

class MsSqlPipelineX(object):
    def __init__(self):
        self.conn = pymssql.connect(host='localhost',user='sa',password='******',database='Find')
        self.cursor = self.conn.cursor()

    def process_item(self,item,spider):
        try:
            # sql = 'INSERT INTO dbo.find(user_name,user_url) VALUES (%s,%s)'
            self.cursor.execute("INSERT INTO dbo.find(user_name,user_url) VALUES (%s,%s)",(item['user_name'],item['user_url']))
            self.conn.commit()
        except Exception as ex:
            print(ex)
        return item
           

你可以提前在資料庫中建好表和字段

host指明資料庫是本地

user指明目前的使用者名

password指明密碼

database指明要存入的資料庫,

不用指明端口

如果代碼出現黃色警報,

self.cursor.execute("INSERT INTO dbo.find(user_name,user_url) VALUES (%s,%s)",(item['user_name'],item['user_url']))
           

表示目前編譯器中沒有指明資料庫,也可認為沒有正确連接配接到資料庫。

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

以下是解決辦法:

點選編譯器的Database

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

導入資料庫

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

填寫紅色框中的資訊,

Database為sqlserver中建立好的資料庫名

取消 use.*?的鈎

使用使用者名/密碼登入資料庫

點選ok儲存

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

就是這個樣子

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

報紅,沒關系,我們現在看看資料是否能儲存入資料庫。

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

運作代碼,資料正常開始擷取。

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

檢視資料庫的資訊

使用pycharm連接配接sqlserver資料庫儲存scrapy的資料

可以看到資料已經存到資料庫中,說明成功了。

以上,加油吧