Python中使用Orecalh查询数据

在Oracle数据库中,我们经常需要使用Python来连接数据库进行数据处理和操作。
然而,如果大量的连接和断开会降低性能,这时候连接池就可以派上用场了。
连接池是一组已经初始化的数据库连接对象,这些连接对象可以供一个线程使用,
线程使用完成后不需要断开连接,而是将连接放回池中,等待下一个请求。这种方式提供了更高的性能和可伸缩性。
本文将介绍如何使用CX_Oracle连接池,让数据库操作更加高效。

# oracle 连接池,用户名、密码、连接地址、连接池中需要维护的最小连接数,SMESDB_Rp服务名称,连接池中需要维护的最大连接数,threaded=True支持多线程
SMESDB_RO_POOl = cx_Oracle.SessionPool("M6666SERTO", "1235484887",
        "176.21.20.18:1621/SMESDB_Rp", min=10, max=60, increment=1, threaded=True, encoding="UTF-8", getmode=cx_Oracle.SPOOL_ATTRVAL_WAIT,)
# 使用    通过pool.acquire()获取到一个连接对象SMESDB_RO_CONN,在完成数据的操作后,当离开上下文环境时,连接对象将自动关闭并返回到池中。
SMESDB_RO_CONN = SMESDB_RO_POOl.acquire()
# 获取游标,游标不仅作为Python与Oracle数据库通信的中介,还作为游标缓冲区并控制主机到服务器的通信。务必在使用完后将游标关闭。如果您不执行cursor.close(),则会严重影响应用程序性能,并使池中的连接数达到上限。
SMESDB_RO_CURSOR = SMESDB_RO_CONN.cursor()
# 执行查询sql
SMESDB_RO_CURSOR.execute(main_sql)


for result in SMESDB_RO_CURSOR:  # 循环从游标获取每一行并输出该行。  遍历oracle的查询结果
    des = SMESDB_RO_CURSOR.description
    t = ",".join([item[0] for item in des])
    table_head = t.split(',')  # 查询表列名 用,分割
    list_list = list(result)
    dict_result = dict(zip(table_head, list_list))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值