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实现一个简单的能够上传下载的HTTP服务器
May 05 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
浅析Python数据处理
May 02 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
Django框架使用mysql视图操作示例
May 15 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
一文搞懂如何实现Go 超时控制
Mar 30 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
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
解析如何用php screw加密php源代码
2013/06/20 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
js转html实体的方法
2016/09/27 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
房屋出租委托书格式
2014/09/23 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
学生检讨书
2015/01/27 职场文书
2019大学生实习报告
2019/06/21 职场文书
Pandas数据类型之category的用法
2021/06/28 Python