Python链接Oracle数据库cx_Oracle

 记得下载cx_Oracle

pip install cx_Oracle
import cx_Oracle
import threading

urlOracle = '172.0.0.1:1521/prod'
userOracle = 'name'
passwordOracle = 'pwd'

# 创建数据库连接池
poolOracle = cx_Oracle.SessionPool(userOracle,  #
                                   passwordOracle,  #
                                   urlOracle,  #
                                   min=12,
                                   max=16,
                                   increment=1,
                                   threaded=True,
                                   encoding="UTF-8")


def selectOracle(sqlSelect, sem=None):
    # 请求池中的连接
    conn = poolOracle.acquire()
    # 使用连接
    cursor = conn.cursor()
    resList = []
    try:
        res = cursor.execute(sqlSelect)
        resList = res.fetchall()
    except Exception:
        print(sqlSelect)
    finally:
        # 关闭游标
        cursor.close()
        # 将连接返回池中
        poolOracle.release(conn)
    if isinstance(sem, threading.Semaphore):
        sem.release()
    return resList


def deleteOracle(sqlDelete, sem=None):
    conn = poolOracle.acquire()
    cur = conn.cursor()
    try:
        # 执行SQL语句
        cur.execute(sqlDelete)
        # 提交修改
        conn.commit()
    except:
        # 发生错误时回滚
        conn.rollback()
    finally:
        cur.close()
        poolOracle.release(conn)
    if isinstance(sem, threading.Semaphore):
        sem.release()


def updateOracle(sqlUpdate, sem=None):
    conn = poolOracle.acquire()
    cur = conn.cursor()
    try:
        cur.execute(sqlUpdate)
        conn.commit()
    except Exception:
        print(sqlUpdate)
        # 发生错误时回滚
        conn.rollback()
    finally:
        cur.close()
        poolOracle.release(conn)
    if isinstance(sem, threading.Semaphore):
        sem.release()


def insertOracle(sqlInsert, sem=None):
    conn = poolOracle.acquire()
    cur = conn.cursor()

    try:
        cur.execute(sqlInsert)
        conn.commit()
    except Exception:
        # 发生错误时回滚
        conn.rollback()
    finally:
        cur.close()
        poolOracle.release(conn)
    if isinstance(sem, threading.Semaphore):
        sem.release()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值