You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PyScript中使用cx_Oracle连接Oracle数据库失败求助

在PyScript中连接Oracle数据库的问题解决思路

首先明确:cx_Oracle没法直接在PyScript里用。因为它依赖Oracle的原生客户端库(比如Instant Client),而PyScript跑在浏览器的WebAssembly环境里,根本加载不了这类二进制库,所以你怎么改py-env里的包名都没用。

给你两个可行的解决方向:

1. 后端API中转(最靠谱的方案)

别在浏览器端直接连Oracle,写个简单的后端接口(比如用FastAPI或者Flask),让后端去用cx_Oracle连数据库、处理查询,前端PyScript通过网络请求调用后端接口拿数据就行。

举个简单例子:

后端(FastAPI)代码

from fastapi import FastAPI
import cx_Oracle

app = FastAPI()

@app.get("/get-oracle-data")
def fetch_oracle_data():
    # 这里用你的数据库连接信息
    conn = cx_Oracle.connect('cthaeh/####@localhost')
    cursor = conn.cursor()
    # 替换成你要执行的SQL
    cursor.execute("SELECT * FROM your_table")
    result = cursor.fetchall()
    conn.close()
    return {"data": result}

前端PyScript代码

from pyodide.http import pyfetch
import asyncio

async def get_data():
    # 替换成你的后端服务地址
    resp = await pyfetch("http://your-backend-server/get-oracle-data")
    data = await resp.json()
    print("获取到的数据:", data)

asyncio.ensure_future(get_data())

2. 纯Python驱动?别想了

目前没有完全不依赖原生库的纯Python Oracle驱动,所以这条路走不通。所有Python的Oracle驱动都需要依赖客户端二进制文件,WebAssembly环境不支持。

另外补充:你之前试的各种包名写法其实都是对的,但PyScript的py-env只能装纯Python包或者已经编译成WebAssembly版本的包,cx_Oracle不符合这个条件,所以肯定装不上。

内容的提问来源于stack exchange,提问作者Pedro H.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:15:13