Python 调用 ES、Solr、Phoenix的示例代码


Posted in Python onNovember 23, 2020
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# *************************************
# @Time  : 2019/8/12
# @Author : Zhang Fan
# @Desc  : Library
# @File  : MyDatabases.py
# @Update : 2019/8/23
# *************************************
import elasticsearch
import phoenixdb
import pysolr
import pymysql


class MyELS(object):
  """
  ===================================================================
  =====================    MyELS    =========================
  ===================================================================
  """
  def __init__(self):
    self.els_conn = None

  def connect_to_els(self, host, port):
    """
    连接到ElasticSearch服务器.
    """
    self.els_conn = elasticsearch.Elasticsearch([{'host': host, 'port': port}])
    print('Executing : Connect To Elastic Search | %s' % self.els_conn)

  def get_els_data(self, query, index):
    """
    获取ElasticSearch数据
    """
    print('Executing : Search | %s' % query)
    try:
      rst = self.els_conn.search(index=index, q=query)
      return rst['hits']
    except Exception as e:
      print('Elastic Search Error | %s' % e)
      raise Exception(e)


class MyPhoenix(object):
  """
  ===================================================================
  =====================    MyPhoenix    ======================
  ===================================================================
  """
  def __init__(self):
    self.phoenix_conn = None
    self.phoenix_cursor = None

  def connect_to_phoenix(self, host, port=8765):
    """
    连接到phoenix服务器
    """
    address = 'http://{0}:{1}/'.format(host, port)
    print('Executing : Connect To Phoenix | %s' % address)
    self.phoenix_conn = phoenixdb.connect(address, autocommit=True)
    self.phoenix_cursor = self.phoenix_conn.cursor()

  def set_schema(self, sql, schema):
    """
    设置schema
    """
    pre_sub, sub, fol_sub = sql.upper().partition('FROM')
    fol_sub = ' ' + schema + '.' + fol_sub.strip()
    new_sql = ''.join([pre_sub, sub, fol_sub])
    return new_sql

  def execute_phoenix_sql(self, sql):
    """
    执行sql语句
    """
    # sql = self.set_schema(sql, schema)
    print('Executing : Execute | %s' % sql)
    self.phoenix_cursor.execute(sql)

  def get_from_phoenix(self, sql):
    """
    获取phoenix数据
    """
    # sql = self.set_schema(sql, schema)
    print('Executing : Query | %s' % sql)
    try:
      self.phoenix_cursor.execute(sql)
    except Exception as e:
      print('Phoenix Error | %s' % e)
      raise Exception(e)
    return self.phoenix_cursor.fetchall()

  def disconnect_from_phoenix(self):
    """
    断开phoenix连接
    """
    print('Executing : Disconnect From HBase')
    self.phoenix_cursor.close()
    self.phoenix_conn.close()


class MySolr(object):
  """
  ===================================================================
  =====================    MySolr    =========================
  ===================================================================
  """
  def __init__(self):
    self.solr_conn = None
    self.base_url = None

  def connect_to_solr(self, address, selector):
    """连接到solr服务器.
    """
    self.base_url = 'http://{0}/solr/{1}/'.format(address, selector)
    self.solr_conn = pysolr.Solr(self.base_url)
    print('Executing : Connect To Solr | %s' % self.base_url)

  def get_solr_data(self, query):
    """
    获取solr数据
    """
    results = list()
    print('Executing : Search | %s' % query)
    try:
      items = self.solr_conn.search(query)
      for item in items:
        results.append(item)
    except Exception as e:
      print('Solr Error | %s' % e)
      raise Exception(e)
    return results

  def add_solr_data(self, data):
    """
    添加solr数据
    """
    print('Executing : add | %s' % data)
    try:
      self.solr_conn.add([data])
      self.solr_conn.commit()
    except Exception as e:
      print('Solr Error | %s' % e)
      raise Exception(e)

  def del_solr_byId(self, data):
    """
    删除solr数据
    """
    print('Executing : del | %s' % data)
    try:
      self.solr_conn.delete(id=data)
      self.solr_conn.commit()
    except Exception as e:
      print('Solr Error | %s' % e)
      raise Exception(e)


if __name__ == '__main__':
  print('This is test.')
  ms = MySolr()
  me = MyELS()
  mp = MyPhoenix()

以上就是Python 调用 ES、Solr、Phoenix的示例代码的详细内容,更多关于Python 调用 ES、Solr、Phoenix的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python del()函数用法
Mar 24 Python
基于Python实现文件大小输出
Jan 11 Python
Python实现带百分比的进度条
Jun 28 Python
tensorflow获取变量维度信息
Mar 10 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
python求质数的3种方法
Sep 28 Python
pandas去除重复列的实现方法
Jan 29 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
详解python中的数据类型和控制流
Aug 08 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
python 实现控制鼠标键盘
Nov 27 Python
10个示例带你掌握python中的元组
Nov 23 #Python
详解anaconda安装步骤
Nov 23 #Python
Python可以用来做什么
Nov 23 #Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 #Python
python里反向传播算法详解
Nov 22 #Python
python动态规划算法实例详解
Nov 22 #Python
python全栈开发语法总结
Nov 22 #Python
You might like
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
Display SQL Server Version Information
2007/06/21 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
Openlayers绘制地图标注
2020/09/28 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
Python中str.join()简单用法示例
2018/03/20 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
优秀的茶餐厅创业计划书
2014/01/03 职场文书
银行贷款收入证明
2014/10/17 职场文书
离婚协议书范本
2015/01/26 职场文书
2015年中个人总结范文
2015/03/10 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2016元旦主持人开场白
2015/12/03 职场文书