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

示例代码

python 复制代码
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")

执行成功

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天

相关推荐
larance2 天前
fastapi 使用本地资源自定义swagger文档
fastapi
肥肠可耐的西西公主2 天前
后端(FastAPI)学习笔记(CLASS 3):Tortoise ORM
笔记·学习·fastapi
onelafite4 天前
小红书笔记评论一键获取,实时查看作品数据
api·fastapi
shao9185164 天前
Gradio全解11——Streaming:流式传输的视频应用(2)——Twilio:网络服务提供商
fastapi·handler·stun·turn·ice·twillo
枫叶V5 天前
用 FastAPI 实现大文件分片上传与断点续传(含可运行示例与客户端脚本,仅供参考)
python·fastapi
蓝倾8 天前
利用API接口合规获取淘宝店铺所有商品实战案例(2025年最新版)
api·fastapi
肥肠可耐的西西公主9 天前
后端(fastAPI)学习笔记(CLASS 1):扩展基础
笔记·学习·fastapi
红鼻子时代10 天前
Day5-中间件与请求处理
中间件·fastapi·后端开发
蓝倾10 天前
京东商品属性API数据解析:颜色、尺寸与材质
api·fastapi
CodeDevMaster12 天前
使用Transformers、ChatGLM3项目、创建FastAPI应用等方式部署调用ChatGLM3-6B模型
llm·fastapi·chatglm (智谱)