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)
MySQL&ES连接池的更多相关文章
- Node.js使用MySQL的连接池
使用Nodejs+MySQL肯定比PHP和MySQL的组合更适合做服务器端的开发. 使用Nodejs你会从他的异步行为中获益良多.比如,提升性能,你无须在从已有的MySQL数据库迁移到其他的NoSQL ...
- [nodejs]解决mysql和连接池(pool)自动断开问题
最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...
- hibernate+mysql的连接池配置
1:连接池的必知概念 首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了. 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放.如果频繁的 ...
- Tomcat 下 mysql的连接池配置和使用
最近维护的一个项目出了问题,最后分析是卡在数据库连接池上,然后就做了些学习. 先把我自己的方法写出来,再说下网上其他的没有成功的方法. 1.首先当然是先把mysql的jar包放在lib目录下,tonc ...
- Python下Mysql数据连接池——单例
# coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common ...
- nodejs mysql 创建连接池
用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...
- MySQL 使用连接池封装pymysql
备注:1,记得先修改连接的数据库哦,(用navicat更方便一点):2,分开两个py文件写入,运行sqlhelper.py文件 一.在utils.py中写 import pymysqlfrom DBU ...
- 码海拾遗:基于MySQL Connector/C++的MySQL操作(连接池)
1.MySQL安装及简单设置 (1)安装:在OSX系统下,可以使用万能的“brew install”命令来进行安装:brew isntall mysql(默认安装最新版的MySQL) (2)启动:br ...
- mysql HikariCP连接池配置
#连接池配置 #最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size spring.datasource.hikari.minimum ...
随机推荐
- Fiddler抓包实用非常详细,学会不要去做坏事~
为什么要先学fiddler?学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 抓firefox上https ...
- redis如何实现分布式锁?
1.使用redis中的自增来实现 2.使用setnx + del # 如果不存在set(返回1),如果存在则失败(返回0) 为了避免死锁会加上一个过期时间 自增方式 boolean isSelf = ...
- wpf 自定义 RadioButton.
<Style TargetType="RadioButton" x:Key="nav"> <Setter Property="Tem ...
- 【mysql】关联查询_子查询_排序分组优化
1. 关联查询优化 1.1 left join 结论: ①在优化关联查询时,只有在被驱动表上建立索引才有效! ②left join 时,左侧的为驱动表,右侧为被驱动表! 1.2 inner join ...
- Float浮动(慕课网学习笔记)
float浮动 属性:值 意义 float:left 左浮动 float:right 右浮动 float:none 不浮动 float:inherit 继承父元素浮动属性,若父元素没有浮动属性则失效 ...
- maven思维导图梳理
图片可能稍微有点模糊,附上xmind下载地址: 补上面漏掉的Jetty,可以参照这位博主的博客
- shell脚本 批量添加删除用户
2021-07-26 1.批量添加用户 # 编写脚本 vi add_student_50.sh # 添加用户组 student groupadd student # 添加用户 student1-stu ...
- Java特性和优势
Java特性和优势 简单性 面向对象性 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性
- sublime text 3 中文排序插件
ST3 的排序不支持中文按拼音排序,所以需要搞一个插件来支持这一特性 pypinyin 这个库可以把中文转成拼音,可惜不支持 python3.3,而 ST3 内置的 python 就是 3.3 我系统 ...
- Throwable中3个异常的方法