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

1) 连接池类#settings.py

  1. import os
  2. from DBUtils.PooledDB import PooledDB
  3. from elasticsearch import Elasticsearch
  4. import pymysql
  5. class Config(object):
  6. POOL = PooledDB(
  7. creator = pymysql,
  8. maxconnections = 20,
  9. mincached = 3,
  10. maxcached = 3,
  11. host = '10.208.116.41',
  12. port = 3306,
  13. user = 'hadoop',
  14. password= 'XXXXX',
  15. database = 'hadoop_tools'
  16. )
  17. #elasticsearch connect
  18. es_conn = Elasticsearch(
  19. ['10.208.116.33', '10.208.116.34', '10.208.116.35'],
  20. sniff_timeout=60,
  21. sniff_on_start=True
  22. )
  23. es_mapping = {
  24. 'properties': {
  25. 'title': {
  26. 'type': 'text',
  27. 'analyzer': 'ik_max_word',
  28. 'search_analyzer': 'ik_max_word'
  29. }
  30. }
  31. }
  32.  
  33. #POOL test
  34. if __name__ == '__main__':
  35. conn = Config.POOL.connection()
  36. #cur = conn.cursor(pymysql.cursors.DictCursor)
  37. cur = conn.cursor()
  38. cur.execute("select * from hs2_status")
  39. ret = cur.fetchall()
  40. for i in ret:
  41. print(i)

2)封装MySQL的操作

utils/helper.py

  1. import pymysql
  2. from ops.settings import Config
  3. def connect():
  4. conn = Config.POOL.connection()
  5. cur = conn.cursor(pymysql.cursors.DictCursor)
  6. return conn,cur
  7. def connect_close(conn,cur):
  8. conn.close()
  9. cur.close()
  10.  
  11. def fetch_all(sql,args):
  12. conn,cur = connect()
  13. cur.execute(sql,args)
  14. result = cur.fetchall()
  15. connect_close(conn,cur)
  16. return result
  17.  
  18. def fetch_one(sql,args):
  19. conn,cur = connect()
  20. cur.execute(sql,args)
  21. result = cur.fetchone()
  22. connect_close(conn,cur)
  23. return result
  24.  
  25. def insert(sql,args):
  26. conn, cur = connect()
  27. row = cur.execute(sql,args)
  28. conn.commit()
  29. connect_close(conn,cur)
  30. return row
  31.  
  32. def update(sql,args):
  33. conn, cur = connect()
  34. row = cur.execute(sql,args)
  35. conn.commit()
  36. connect_close(conn,cur)
  37. return row
  38.  
  39. def delete(sql,args):
  40. conn, cur = connect()
  41. row = cur.execute(sql,args)
  42. conn.commit()
  43. connect_close(conn,cur)
  44. return row

  45. ##下面这段调试用,可以去掉
  46. if __name__ == '__main__':
  47. in_zk = 'YES'
  48. ip = '10.208.106.159'
  49. # row = update("update hs2_status set in_zk=%s where host_ip = %s",(in_zk,ip))
  50. # print("row is %s" %(row))
  51.  
  52. # 获得表头
  53. # sql = "SHOW FIELDS FROM hs2_status"
  54. # tb_h = fetch_one(sql,()) # 执行sql
  55. # #hs2_header = [l[0] for l in tb_h]
  56. # # for i in tb_h:
  57. # print("this is %s" %(tb_h))
  58. #获取内容
  59. # hs2_content = fetch_all(sql, ())
  60. sql = "select * from hs2_status"
  61. hs2_content = fetch_all(sql,())
  62. for i in hs2_content:
  63. print(i)

3)ES连接引用示例:

  1. #!/usr/bin/env python
  2. # encoding: UTF-8
  3. from ops.settings import Config
  4.  
  5. #create index,change mappings
  6. Config.es_conn.indices.create(index='news', ignore=400)
  7. Config.es_conn.indices.put_mapping(index='news', doc_type='politics', body=Config.es_mapping)
  8.  
  9. datas = [
  10. {
  11. 'title': '美国留给伊拉克的是个烂摊子吗',
  12. 'url': 'http://view.news.qq.com/zt2011/usa_iraq/index.htm',
  13. 'date': '2011-12-16'
  14. },
  15. {
  16. 'title': '公安部:各地校车将享最高路权',
  17. 'url': 'http://www.chinanews.com/gn/2011/12-16/3536077.shtml',
  18. 'date': '2011-12-16'
  19. },
  20. {
  21. 'title': '中韩渔警冲突调查:韩警平均每天扣1艘中国渔船',
  22. 'url': 'https://news.qq.com/a/20111216/001044.htm',
  23. 'date': '2011-12-17'
  24. },
  25. {
  26. 'title': '中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首',
  27. 'url': 'http://news.ifeng.com/world/detail_2011_12/16/11372558_0.shtml',
  28. 'date': '2011-12-18'
  29. }
  30. ]
  31.  
  32. #insert data
  33. for data in datas:
  34. Config.es_conn.index(index='news', doc_type='politics', body=data)
  35.  
  36. #query data
  37. result = Config.es_conn.search(index='news')
  38. 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. Fiddler抓包实用非常详细,学会不要去做坏事~

    为什么要先学fiddler?学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 抓firefox上https ...

  2. redis如何实现分布式锁?

    1.使用redis中的自增来实现 2.使用setnx + del # 如果不存在set(返回1),如果存在则失败(返回0) 为了避免死锁会加上一个过期时间 自增方式 boolean isSelf = ...

  3. wpf 自定义 RadioButton.

    <Style TargetType="RadioButton" x:Key="nav"> <Setter Property="Tem ...

  4. 【mysql】关联查询_子查询_排序分组优化

    1. 关联查询优化 1.1 left join 结论: ①在优化关联查询时,只有在被驱动表上建立索引才有效! ②left join 时,左侧的为驱动表,右侧为被驱动表! 1.2 inner join ...

  5. Float浮动(慕课网学习笔记)

    float浮动 属性:值 意义 float:left 左浮动 float:right 右浮动 float:none 不浮动 float:inherit 继承父元素浮动属性,若父元素没有浮动属性则失效 ...

  6. maven思维导图梳理

    图片可能稍微有点模糊,附上xmind下载地址: 补上面漏掉的Jetty,可以参照这位博主的博客

  7. shell脚本 批量添加删除用户

    2021-07-26 1.批量添加用户 # 编写脚本 vi add_student_50.sh # 添加用户组 student groupadd student # 添加用户 student1-stu ...

  8. Java特性和优势

    Java特性和优势 简单性 面向对象性 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性

  9. sublime text 3 中文排序插件

    ST3 的排序不支持中文按拼音排序,所以需要搞一个插件来支持这一特性 pypinyin 这个库可以把中文转成拼音,可惜不支持 python3.3,而 ST3 内置的 python 就是 3.3 我系统 ...

  10. Throwable中3个异常的方法