记得下载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()