構築するためのpython接続ハイブデータベース環境

私は、Python 2を使用:(あなたは最初の)次のPythonパッケージをインストールする必要があります

Pythonパッケージをインストールする前に、いくつかの依存関係のツールをインストールする必要があります。

Debianの/ Ubuntuの:apt-getのインストールのpython-devのlibsasl2-devのGCC
CentOSの/ RHEL:YUMインストールのgcc-C ++のpython-devel.x86_64のcyrus-saslの-devel.x86_64のmysql-develの
bitarray-0.8.3.tar.gz
impyla-0.14.0.tar.gz
MySQL-python-1.2.5.zip 

新HiveHelper.py
# - * -コーディング:UTF-8 - * - 
impala.dbapiインポート接続から

クラスHiveHelper(オブジェクト):
    デフ__init __(自己):
        self.host = '' 
        self.port = 
        self.database = '' 
        self.user = '' 
        self.password = '' 
        self.auth_mechanism = '' 
        self.connect()

    デフ接続(自己):
        "" "接続
        のArgs:
            nullの
        戻り値:
            nullの
        """ 
        self.conn =接続(
            ホスト= self.host、
            ポート= self.port、
            データベース= self.database、
            ユーザー= self.user、
            パスワード= self.password、
            auth_mechanism = self.auth_mechanism)
        self.cursor = self.conn.cursor()

    デフ近い(自己):
        "" "近く
        のArgs:
            nullの
        戻り値:
            nullの
        """ 
        self.cursor.close()
        自己.conn.close()

    デフクエリ(自己、SQL):
        "" "クエリ
        のArgs:
            SQL 
        戻り値:
            SQL結果
        """ 
        結果は=()
        してみてください:
            self.cursor.execute(SQL)
            結果= self.cursor。fetchAllの()
        eと例外を除い:
            印刷e.messageはメッセージの
        リターン結果

    :DEF(自己、SQL)を実行
        してみてください:
            self.cursor.execute(SQL)
            self.conn.commit()
        を除い:
            self.conn.rollback()

  

新HiveSearch.py
#!は/ usr / binに/のpython 
# - * -コーディング:UTF-8 - * - 

輸入OS、SYS 
輸入再
輸入JSON 
輸入数学
インポート時
のインポートオペレータ
輸入urlparse 
輸入スレッド
輸入HiveHelperの
インポート要求が
カレンダーのインポート
インポートの日時


クラスPcdnSearchを:
    DEF __init __(自己):
        self.sql = HiveHelper.HiveHelper()
        self.punch_data = {} 
        self.flow_data = {} 

    DEF get_flow_data(自己、時間、クライアントID):
        SQL = "" 
印刷のSQL 
        試み:
            結果= self.sql .query(SQL)
            結果のアイテムのための:
                GUID =項目[1] 
                流量=項目[3] 
                帯= ROUND(フロート(流量)* / 3600/1000分の1000 8 * 1.1、2)
                self.flow_data [GUID] =(流量、バンド)
        例外、Eを除きます。
            通過

    DEF get_punch_data(自己、時間、クライアントID):
        SQL = "" 



    DEF get_result(自己):
        


もし__name__ == '__main__':
    lenの場合(sys.argvの)== 3:
        RUN_TIME = sys.argvの[1] 
        CLIENT_ID = INT(sys.argvの[2])
    他:
        印刷'PARAMエラー' 
        出口(0)
    CB = PcdnSearch()
    cb.get_punch_data(RUN_TIME、CLIENT_ID)
    cb.get_flow_data(RUN_TIME、CLIENT_ID)
    cb.get_result()

  





おすすめ

転載: www.cnblogs.com/sweetsunnyflower/p/11319993.html