数据库的连接池建议放在类似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)

  

MySQL&ES连接池的更多相关文章

  1. Node.js使用MySQL的连接池

    使用Nodejs+MySQL肯定比PHP和MySQL的组合更适合做服务器端的开发. 使用Nodejs你会从他的异步行为中获益良多.比如,提升性能,你无须在从已有的MySQL数据库迁移到其他的NoSQL ...

  2. [nodejs]解决mysql和连接池(pool)自动断开问题

    最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...

  3. hibernate+mysql的连接池配置

    1:连接池的必知概念    首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了. 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放.如果频繁的 ...

  4. Tomcat 下 mysql的连接池配置和使用

    最近维护的一个项目出了问题,最后分析是卡在数据库连接池上,然后就做了些学习. 先把我自己的方法写出来,再说下网上其他的没有成功的方法. 1.首先当然是先把mysql的jar包放在lib目录下,tonc ...

  5. Python下Mysql数据连接池——单例

    # coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common ...

  6. nodejs mysql 创建连接池

    用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...

  7. MySQL 使用连接池封装pymysql

    备注:1,记得先修改连接的数据库哦,(用navicat更方便一点):2,分开两个py文件写入,运行sqlhelper.py文件 一.在utils.py中写 import pymysqlfrom DBU ...

  8. 码海拾遗:基于MySQL Connector/C++的MySQL操作(连接池)

    1.MySQL安装及简单设置 (1)安装:在OSX系统下,可以使用万能的“brew install”命令来进行安装:brew isntall mysql(默认安装最新版的MySQL) (2)启动:br ...

  9. mysql HikariCP连接池配置

    #连接池配置 #最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size spring.datasource.hikari.minimum ...

随机推荐

  1. 07.SpringMVC之静态资源

    如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截"/",拦截了所有的请求,同时对 ...

  2. Git使用:

    配置可参考: 配置name 及email:$ git config --global user.name "Your Name"$ git config --global user ...

  3. go GC垃圾回收原理

    目录 1.前言 2. 垃圾回收算法 3. Golang垃圾回收 3.1 垃圾回收原理 3.2 内存标记(Mark) 3.3 三色标记 3.4 Stop The World 4. 垃圾回收优化 4.1 ...

  4. 有关Java动态数组的一个小问题

    前言 问题描述 今天遇到一个关于集合的问题,觉得比较有趣,记录一下,这个问题是:定义一个用户类,至少包含姓名,年龄,生日,qq邮箱,初始化10个用户,利用String操作,提取qq到List集合中,姓 ...

  5. Java并发之AQS原理解读(二)

    上一篇: Java并发之AQS原理解读(一) 前言 本文从源码角度分析AQS独占锁工作原理,并介绍ReentranLock如何应用. 独占锁工作原理 独占锁即每次只有一个线程可以获得同一个锁资源. 获 ...

  6. vue 之 v-model

    v-model虽然很像使用了双向数据绑定的 Angular 的 ng-model,但是 Vue 是单项数据流,v-model 只是语法糖而已: <input v-model="sth& ...

  7. leetcode——217. 存在重复元素

    leetcode--217. 存在重复元素 题目描述:给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false ...

  8. FPGA nios通过驱动LCD12864实现菜单界面和uart串口通信

    因为csdn无法插入视频,无法展示我这个实现的效果,这里我截了一些图,应该基本上也能明白了: 基本功能就是如图片所示,里面采用了菜单结构(这里编程需要一定得c语言编程技巧与数据结构知识),gpa是什么 ...

  9. 磁盘“Seagate”没有被推出,因为一个或多个程序可能正在使用它。

    推出移动硬盘失败,解决方案: 执行 lsof /Volumes/Seagate/ 可以看到哪些进程在占用磁盘 $ lsof /Volumes/Seagate/ COMMAND PID USER FD ...

  10. Django的form组件——自定义校验函数

    from django.shortcuts import render,HttpResponse from django import forms from django.core.exception ...