日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

pyspider 连接mysql_pyspider 导入模块报错 提示 No module named mysqldb

發布時間:2023/12/18 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyspider 连接mysql_pyspider 导入模块报错 提示 No module named mysqldb 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習pyspider 參照《 把 pyspider的結果存入自定義的mysql數據庫中 》文章

設置了本地的mysql數據庫及連接,但運行時 提示 :process csair:_on_get_info data:,_on_get_info -> [200] len:12 -> result:None fol:0 msg:0 err:ImportError(‘No module named mysqldb’,)

系統環境:centos7.1

mysql-python(1.2.5) pip 默認安裝

python采用默認的2.7.5

希望得到幫助 感謝

文件已存到 pyspider/database/mysql/mysqldb.py 腳本文件如下:

#!/usr/bin/env python

# -*- encoding: utf-8 -*-

# Created on 2015-12-21 09:28:49

# Project: csair

from pyspider.libs.base_handler import *

from pyspider.database.mysql.mysqldb import SQL

class Handler(BaseHandler):

crawl_config = {

}

@every(minutes=24 * 60)

def on_start(self):

self.crawl('http://www.csair.cn/cn/pages/NewsList.aspx?listname=%D6%D8%D2%AA%B9%AB%B8%E6', callback=self.index_page)

@config(age=10 * 24 * 60 * 60)

def index_page(self, response):

for each in response.doc('a[href^="http"]').items():

self.crawl(each.attr.href, callback=self.detail_page)

def list_page(self, response):

for each in response.doc('ul_list7 a').items():

self.crawl(each.attr.href, callback=self.detail_page)

for each in response.doc('.currentnumeric').items():

self.crawl(each.attr.href, callback=self.list_page)

@config(priority=2)

def detail_page(self, response):

return {

"url": response.url,

"title": response.doc('ctl00_ContentPlaceHolder1_DetailBar1_NewsTitle ').text(),

"fabushijain" :response.doc('span#ctl00_ContentPlaceHolder1_DetailBar1_ReleaseLabel').text(),

"content" : response.doc('#ctl00_ContentPlaceHolder1_DetailBar1_ContentInfo').text(),

}

def on_result(self, result):

#print result

if not result or not result['title']:

return

sql = SQL()

sql.replace('info',**result)

++++++++++++++++++++++++++++++++++++++++++++++

mysqldb.py 文件內容如下:

class SQL:

username = 'pyspider' ? #數據庫用戶名

password = 'pyspider' ? #數據庫密碼

database = 'result' ? ? #數據庫

host = 'localhost' ? ? ?#數據庫主機地址

connection = ''

connect = True

placeholder = '%s'

def __init__(self):

if self.connect:

SQL.connect(self)

def escape(self,string):

return '`%s`' % string

def connect(self):

config = {

'user':SQL.username,

'password':SQL.password,

'host':SQL.host

}

if SQL.database != None:

config['database'] = SQL.database

try:

cnx = mysql.connector.connect(**config)

SQL.connection = cnx

return True

except mysql.connector.Error as err:

if (err.errno == errorcode.ER_ACCESS_DENIED_ERROR):

print "The credentials you provided are not correct."

elif (err.errno == errorcode.ER_BAD_DB_ERROR):

print "The database you provided does not exist."

else:

print "Something went wrong: " , err

return False

def replace(self,tablename=None,**values):

if SQL.connection == '':

print "Please connect first"

return False

tablename = self.escape(tablename )

if values:

_keys = ", ".join(self.escape(k) for k in values)

_values = ", ".join([self.placeholder, ] * len(values))

sql_query = "REPLACE INTO %s (%s) VALUES (%s)" % (tablename, _keys, _values)

else:

、 ? ? sql_query = "REPLACE INTO %s DEFAULT VALUES" % tablename

cur = SQL.connection.cursor()

try:

if values:

cur.execute(sql_query, list(itervalues(values)))

else:

cur.execute(sql_query)

SQL.connection.commit()

return True

except mysql.connector.Error as err:

print ("An error occured: {}".format(err))

return False

有兩個思路供參考:

檢查一下包下邊的__init__.py是否存在

檢查一下模塊名和導入的模塊名是否一致,特別是這個模塊被多個py文件導入

感謝支持 貌似不是這個原因

有可能是原來的mysql-python的連接版本過低導致,pip安裝后是mysql-connector-python(1.0.11) Mysql-python(1.2.5)

參考版本地址: http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-Python/

采用最新版的mysql-connector-python(2.1.2) 還是不行 繼續測試中

版本是centos7的版本 已到 http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-Python/下載的 2.1.2版本

是在什么平臺上?如果是windows 需要到mysql的主頁上找到對應的驅動包

ubuntu 上需要安裝 apt-get install python-mysqldb 來安裝這個包

總結

以上是生活随笔為你收集整理的pyspider 连接mysql_pyspider 导入模块报错 提示 No module named mysqldb的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。