MySQL
import pymysql
class ConnectMysql ( object ) :
"""
存储数据
"""
def __init__ ( self) :
self. connect = pymysql. connect(
host= 'ip' ,
db= 'dbname' ,
user= 'root' ,
passwd= 'pass' ,
use_unicode= True )
self. cursor = self. connect. cursor( )
def _process_people ( self, item) :
self. connect. ping( reconnect= True )
def _process_relation ( self, item) :
self. connect. ping( reconnect= True )
def process_item ( self, item, spider) :
"""
处理item
"""
if isinstance ( item, ZhihuPeopleItem) :
self. _process_people( item)
elif isinstance ( item, ZhihuRelationItem) :
self. _process_relation( item)
return item
mongodb
import pymongo
class TencentPipeline ( object ) :
def __init__ ( self) :
self. connection = pymongo. MongoClient( 'ip' , port, connect= False )
self. connection. admin. authenticate( 'name' , 'pass' )
db = self. connection[ 'taobao' ]
db. authenticate( 'name' , 'pass' )
self. collection1 = db[ 'item' ]
def process_item ( self, item) :
item = dict ( item)
self. collection1. insert_one( item)
redis
import redis
'''
这种连接是连接一次就断了,耗资源.端口默认6379,就不用写
r = redis.Redis(host='127.0.0.1',port=6379,password='tianxuroot')
r.set('name','root')
print(r.get('name').decode('utf8'))
'''
'''
连接池:
当程序创建数据源实例时,系统会一次性创建多个数据库连接,并把这些数据库连接保存在连接池中,当程序需要进行数据库访问时,
无需重新新建数据库连接,而是从连接池中取出一个空闲的数据库连接
'''
pool = redis. ConnectionPool( host= '127.0.0.1' , password= 'helloworld' )
r = redis. Redis( connection_pool= pool)
r. set ( 'foo' , 'bar' )
print ( r. get( 'foo' ) . decode( 'utf8' ) )