Python 通过SQLAlchemy'访问Oracle;s`create_engine()`需要更多的设置,不是吗?

Python 通过SQLAlchemy'访问Oracle;s`create_engine()`需要更多的设置,不是吗?,python,oracle,sqlalchemy,anaconda,fastapi,Python,Oracle,Sqlalchemy,Anaconda,Fastapi,我正在通过FastAPI开发一个API。它用于获取输入、从数据库(Oracle)检索数据并提供经过处理的输出 下面是一个使用Oracle引擎执行查询的函数: 从sqlalchemy导入exc,创建引擎,检查 def db_connection_sqlalchemy(您的查询): db_config=config['database']#来自yml文件的配置 尝试: engine=create_engine(“{0}+{1}://{2}:{3}@{4}.”格式, db_config['sql_驱动

我正在通过FastAPI开发一个API。它用于获取输入、从数据库(Oracle)检索数据并提供经过处理的输出

下面是一个使用Oracle引擎执行查询的函数:

从sqlalchemy导入exc,创建引擎,检查
def db_connection_sqlalchemy(您的查询):
db_config=config['database']#来自yml文件的配置
尝试:
engine=create_engine(“{0}+{1}://{2}:{3}@{4}.”格式,
db_config['sql_驱动程序']#'cx_oracle',
数据库配置['username'],
db_config['password'],
db_config['network_alias']),
最大标识符长度=30,
encoding=“utf8”)
检查员=检查(发动机)
conn=引擎连接()
rows=conn.execute(您的_查询)
rows=rows.fetchmany()
结果=[dict(row.items())表示行中的行]
康涅狄格州关闭
返回结果
除了exc.SQLAlchemyError作为e:
错误=str(例如,指令[orig])
返回错误
没问题。然而,为了建立它,我面临着几个问题

第1期。通过
pip install SQLAlchemy
安装SQLAlchemy后,我遇到了以下错误:

NoSuchModuleError:无法加载插件: sqlalchemy.方言:oracle.cx\u oracle

即使我认为“我不再需要导入cx_Oracle”,基于。我决定安装
pip install cx\u Oracle
,然后我遇到了下一个问题

问题2。每次尝试执行SQL查询时,我都会看到以下错误:

“DPI-1047:找不到64位Oracle客户端库: “C:\oracle\12.2.0\x86\bin\oci.dll不正确 建筑”,见 “求救”

所以,为了克服这个问题,我帮助了我

实际上,到目前为止一切都正常,但在处理SQLAlchemy时,是否仍然可以避免这些附加步骤(安装cx Oracle库、获取dll文件),或者这些是在虚拟环境中使用Oracle DB时的典型陷阱


我在Windows 10上通过Anaconda和Python 3.7.10拥有一个虚拟环境。

我总是单独安装cx\u Oracle-在我的
pip安装中添加一个词“cx\u Oracle”并不是什么大问题。关于引用的措辞:导入(在运行脚本中)与安装(在系统中)不同

您将始终需要安装即时客户端并设置其路径,或者在代码中调用
cx\u Oracle.init\u Oracle\u客户端(lib\u dir=r“c:\PATH\u to\u libraries”)
(请参阅)

获取大量行时,调整
arraysize
prefetchrows
,请参阅