python将数据存入mysql数据库中_python3 两种方法将数据存入mysql数据库
方法一:(數(shù)據(jù)量小的時候推薦使用這種)
第一步:pip install mysqlclient
這里我沒有報錯 也許你可能會報錯Read timed out ? 此時不要慌,這是因為你的網(wǎng)絡(luò)問題,你使用豆瓣源再次下載:pip install ?-i https://pypi.douban.com/simple/ mysqlclient
注意:以下針對linux用戶(烏班圖):可能這時你會報錯安裝失敗,解決方法:
安裝命令:sudo apt-get install libmysqlclient-dev
linux用戶(centOs):
安裝命令:sudo yum install python-devel mysql-devel
1,在pipeline.py中寫入如下代碼:
import MySQLdb
#采用同步的機制寫入mysql
class MysqlPipeline(object):
def __init__(self):
self.conn = MySQLdb.connect('localhost','root','root','article_spider',charset='utf8',use_unicode=True)
self.cursor = self.conn.cursor()
def process_item(self,item,spider):
insert_sql = """ insert into article(title,create_date,url,fav_nums) VALUES(%s,%s,%s,%s)"""
self.cursor.execute(insert_sql,(item['title'],item['create_date'],item['url'],item['fav_nums']))
self.conn.commit()
2,在settings.py中寫入如下代碼:
ITEM_PIPELINES ={'ArticleSpider.pipelines.MysqlPipeline':1,
}
以上是一種插入數(shù)據(jù)庫的方法,下面還有一種:mysql插入的異步方法
**********************************************************************華麗的分割線 ******************************************************************************
方法二:(數(shù)據(jù)量大的時候推薦使用這種,異步插入關(guān)系型數(shù)據(jù)庫)
1,首先在settings.py中配置
MYSQL_HOST = 'localhost'
MYSQL_DBNAME ='article_spider'
MYSQL_USER = 'root'
MYSQL_PASSWORD = 'root'
2,在pipelines.py中貼入代碼:
from twisted.enterprise import adbapi
import MySQLdb
import MySQLdb.cursors
#mysql插入的異步化,twisted 提供的異步api
class MysqlTwistedPipline(object):
def __init__(self,dbpool):
self.dbpool = dbpool
@classmethod#方法是固定的,會被spider調(diào)用的
def from_settings(cls,settings):
dbparms = dict(
host = settings['MYSQL_HOST'],
db = settings['MYSQL_DBNAME'],
user = settings['MYSQL_USER'],
passwd = settings['MYSQL_PASSWORD'],
charset = 'utf8',
cursorclass = MySQLdb.cursors.DictCursor,
use_unicode = True
)
#**dbparms代表可變化的參數(shù)
dbpool = adbapi.ConnectionPool("MySQLdb",**dbparms)
return cls(dbpool)
def process_item(self,item,spider):
#使用twisted將mysql插入變成異步執(zhí)行
query = self.dbpool.runInteraction(self.do_insert,item)
query.addErrback(self.handle_error,item,spider)
#c處理異步插入的異常
def handle_error(self,failure,item,spider):
print(failure)
def do_insert(self,cursor,item):
#執(zhí)行具體的插入
insert_sql = """ insert into article(title,create_date,url,fav_nums) VALUES(%s,%s,%s,%s)"""
cursor.execute(insert_sql,(item['title'],item['create_date'],item['url'],item['fav_nums']))
致辭插入數(shù)據(jù)庫的方法完成。喜歡的記得點個贊哦。。。謝謝謝謝~~
總結(jié)
以上是生活随笔為你收集整理的python将数据存入mysql数据库中_python3 两种方法将数据存入mysql数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 护卫神怎么增加php版本_护卫神php套
- 下一篇: 卸载mysql 安装mariadb_ce