Python FastApi连接oracle进行查询
这边技术选型是cx_oracle进行连接查询,cx_oracle的使用首先要有官方的客户端才能连接到数据库,python并不自带客户端。我用是Python3.9
安装客户端
可以到官网在选择最新版进行下载。
Instant Client for Microsoft Windows (x64) 64-bit
或者直接从我这里下也行
我用夸克网盘分享了「instantclient-basic-windows.x64-21.12.0.0.0dbru.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/c0fa18a92342
提取码:VwUC
解压找到? ?instantclient_版本号 这个文件 ,把它复制到项目路径下
加载客户端
我的客户端路径在这里
F:\pyVersion\pyResource\instantclient-basic-windows.x64-21.12.0.0.0dbru\instantclient_21_12
项目配置下全局参数
key:ORACLE_CLIENT_LIB
value:F:\pyVersion\pyResource\instantclient-basic-windows.x64-21.12.0.0.0dbru\instantclient_21_12
安装其他包
安装cx_Oracle
pip? install cx_Oracle
示例代码
import os
from fastapi import FastAPI
import cx_Oracle
app = FastAPI()
oracle_client_lib_dir = os.getenv("ORACLE_CLIENT_LIB", "instantclient_21_12")
cx_Oracle.init_oracle_client(lib_dir=oracle_client_lib_dir)
@app.on_event("startup")
async def startup():
global pool
pool = cx_Oracle.SessionPool("账号", "密码", "ip4:1521/服务名", min=2, max=5, increment=1, encoding="UTF-8")
@app.on_event("shutdown")
async def shutdown():
pool.close()
@app.get("/")
async def root():
# 从连接池中获取一个连接
connection = pool.acquire()
try:
# 使用连接进行查询
cursor = connection.cursor()
# select * from wx.USER_VIDEO_CUTIMG where id in(1571373,1571423,1571439,1571459)
cursor.execute(
"select * from wx.USER_VIDEO_CUTIMG where NAME LIKE '%C%'")
# 获取返回值结果,只针对于查询
result_list = cursor.fetchall()
for result in result_list:
oldPhotoName = result[3]
newPhotoName = oldPhotoName.replace('C', 'D')
print(newPhotoName)
# 调用相片旋转等其他操作
...
finally:
# 将连接放回连接池
pool.release(connection)
return {"message": "Hello World"}
当然你可以不必像我这么高级,非要全局获取,直接写成下面也是会连接的
cx_Oracle.init_oracle_client(lib_dir=“F:\pyVersion\pyResource\instantclient-basic-windows.x64-21.12.0.0.0dbru\instantclient_21_12”)
执行成功
------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!