hiven oracle,pymysql与cx_Oracle与pyhive

pymysql

无论是用pymysql连接MySQL,还是使用cx_Oracle连接Oracle也好,总体流程都是一样的:

1、获取connection

2、获取cursor

3、在cursor上执行相关的操作

在 pymysql 提供了一个很好的使用数据库的示例:

# https://pymysql.readthedocs.io/en/latest/user/examples.html

import pymysql.cursors

# Connect to the database

connection = pymysql.connect(host='localhost',

user='user',

password='passwd',

db='db',

charset='utf8mb4',

cursorclass=pymysql.cursors.DictCursor)

try:

with connection.cursor() as cursor:

# Create a new record

sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"

cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

# connection is not autocommit by default. So you must commit to save

# your changes.

connection.commit()

with connection.cursor() as cursor:

# Read a single record

sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"

cursor.execute(sql, ('webmaster@python.org',))

result = cursor.fetchone()

print(result)

finally:

connection.close()

默认情况下 cursor.fetchone() 返回的是一个元组,但是在 pymysql 中可以通过指定 cursorclass=pymysql.cursors.DictCursor 使之返回的是一个字典

cx_Oracle

cx_Oracle本身也自定义了一些类型:

159c346c24b8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

cx_Oracle.jpg

cx_Oracle默认从 cursor 中 fetch 出来的是一个元组,按照SQL中的顺序组织,但是很多时候希望返回的是一个 dict ,然后 cursor.description 为我们提供了足够的信息。

# a sequence of 7-item sequences.

# (name, type, display_size, internal_size, precision, scale, null_ok)

# 每一个元组表示一个字段

# 返回所有的列名

columnNames = [d[0].lower() for d in cursor.description]

# 返回所有的列名与类型

columnNames = [(d[0].lower(), d[1]) for d in cursor.description]

# 将结果构造成 [{}, {}, {}] 的格式

datas = list()

for row in cursor.fetchall():

datas.append(dict(zip(columnNames, row)))

## 或者通过列表表达式

[dict(zip(columnNames, row)) for row in cursor.fetchall()]

# 完整代码

import cx_Oracle

connection = cx_Oracle.connect("****",

"*****",

"14.29.1.27:11526/orcl",

encoding = "GBK",

nencoding = "GBK")

cursor = connection.cursor()

cursor.execute('select * from iptv_app.test_add_pack_plan')

columnNames = [d[0].lower() for d in cursor.description]

datas = [dict(zip(columnNames, row)) for row in cursor.fetchall()]

pyhive

from pyhive import hive

conn = hive.Connection(host='192.168.1.105', port=10000, username='yepeng', database='default')

cursor = conn.cursor()

cursor.execute('select * from student')

for result in cursor.fetchall():

print( result)

当然通过Python去连接Hive也可以通过PySpark

from pyspark.sql import SparkSession

spark = SparkSession \

.builder \

.appName("Python Spark SQL basic example") \

.config("spark.some.config.option", "some-value") \

.getOrCreate()

spark.sql("show databases").show(10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值