python操作hive数据库代码_Python连接Hive操作数据库
前言
客戶端連接Hive需要使用HiveServer2。HiveServer2是HiveServer的重寫版本,HiveServer不支持多個客戶端的并發請求。當前HiveServer2是基于Thrift RPC實現的。它被設計用于為像JDBC、ODBC這樣的開發API客戶端提供更好的支持。Hive 0.11版本引入的HiveServer2。
Python客戶端連接HiveServer2
python中用于連接HiveServer2的客戶端有3個:pyhs2,pyhive,impyla。官網的示例采用的是pyhs2,但pyhs2的官網已聲明不再提供支持,建議使用impyla和pyhive。
數據庫亂碼問題
在Python代碼
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python') 中加一個屬性:
改為:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8')
charset是要跟你數據庫的編碼一樣,如果是數據庫是gb2312 ,則寫charset='gb2312'。
常用的函數
然后,這個連接對象也提供了對事務操作的支持,標準的方法
commit() 提交;
rollback() 回滾;
cursor用來執行命令的方法:
callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數;
execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數;
executemany(self, query, args):執行單挑sql語句,但是重復執行參數列表里的參數,返回值為受影響的行數;
nextset(self):移動到下一個結果集;
cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行;
fetchmany(self, size=None):接收size條返回結果行.如果size的值大于返回的結果行的數量,則會返回cursor.arraysize條數據;
fetchone(self):返回一條結果行;
scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果 mode='absolute',則表示從結果集的第一行移動value條。
代碼示例1
代碼示例2
代碼示例3
總結
以上是生活随笔為你收集整理的python操作hive数据库代码_Python连接Hive操作数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高点回调36% 新东方股价继续暴跌:投资
- 下一篇: idea中project sdk_一文秒