es 链接mysql_MySQL&ES连接池

数据库的连接池建议放在类似settings.py的配置模块中,因为基本都是配置项,方便统一管理。

1) 连接池类#settings.py

import os

from DBUtils.PooledDB import PooledDB

from elasticsearch import Elasticsearch

import pymysql

class Config(object):

POOL = PooledDB(

creator = pymysql,

maxconnections = 20,

mincached = 3,

maxcached = 3,

host = '10.208.116.41',

port = 3306,

user = 'hadoop',

password= 'XXXXX',

database = 'hadoop_tools'

)

#elasticsearch connect

es_conn = Elasticsearch(

['10.208.116.33', '10.208.116.34', '10.208.116.35'],

sniff_timeout=60,

sniff_on_start=True

)

es_mapping = {

'properties': {

'title': {

'type': 'text',

'analyzer': 'ik_max_word',

'search_analyzer': 'ik_max_word'

}

}

}

#POOL test

if __name__ == '__main__':

conn = Config.POOL.connection()

#cur = conn.cursor(pymysql.cursors.DictCursor)

cur = conn.cursor()

cur.execute("select * from hs2_status")

ret = cur.fetchall()

for i in ret:

print(i)

2)封装MySQL的操作

utils/helper.py

import pymysql

from ops.settings import Config

def connect():

conn = Config.POOL.connection()

cur = conn.cursor(pymysql.cursors.DictCursor)

return conn,cur

def connect_close(conn,cur):

conn.close()

cur.close()

def fetch_all(sql,args):

conn,cur = connect()

cur.execute(sql,args)

result = cur.fetchall()

connect_close(conn,cur)

return result

def fetch_one(sql,args):

conn,cur = connect()

cur.execute(sql,args)

result = cur.fetchone()

connect_close(conn,cur)

return result

def insert(sql,args):

conn, cur = connect()

row = cur.execute(sql,args)

conn.commit()

connect_close(conn,cur)

return row

def update(sql,args):

conn, cur = connect()

row = cur.execute(sql,args)

conn.commit()

connect_close(conn,cur)

return row

def delete(sql,args):

conn, cur = connect()

row = cur.execute(sql,args)

conn.commit()

connect_close(conn,cur)

return row

##下面这段调试用,可以去掉

if __name__ == '__main__':

in_zk = 'YES'

ip = '10.208.106.159'

# row = update("update hs2_status set in_zk=%s where host_ip = %s",(in_zk,ip))

# print("row is %s" %(row))

# 获得表头

# sql = "SHOW FIELDS FROM hs2_status"

# tb_h = fetch_one(sql,()) # 执行sql

# #hs2_header = [l[0] for l in tb_h]

# # for i in tb_h:

# print("this is %s" %(tb_h))

#获取内容

# hs2_content = fetch_all(sql, ())

sql = "select * from hs2_status"

hs2_content = fetch_all(sql,())

for i in hs2_content:

print(i)

3)ES连接引用示例:

#!/usr/bin/env python

# encoding: UTF-8

from ops.settings import Config

#create index,change mappings

Config.es_conn.indices.create(index='news', ignore=400)

Config.es_conn.indices.put_mapping(index='news', doc_type='politics', body=Config.es_mapping)

datas = [

{

'title': '美国留给伊拉克的是个烂摊子吗',

'url': 'http://view.news.qq.com/zt2011/usa_iraq/index.htm',

'date': '2011-12-16'

},

{

'title': '公安部:各地校车将享最高路权',

'url': 'http://www.chinanews.com/gn/2011/12-16/3536077.shtml',

'date': '2011-12-16'

},

{

'title': '中韩渔警冲突调查:韩警平均每天扣1艘中国渔船',

'url': 'https://news.qq.com/a/20111216/001044.htm',

'date': '2011-12-17'

},

{

'title': '中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首',

'url': 'http://news.ifeng.com/world/detail_2011_12/16/11372558_0.shtml',

'date': '2011-12-18'

}

]

#insert data

for data in datas:

Config.es_conn.index(index='news', doc_type='politics', body=data)

#query data

result = Config.es_conn.search(index='news')

print(result)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值