Python中通过cx_Oracle连接Oracle数据库的方法

python怎么连接invest库

python如何连接oracle数据库python连接本地oracle数据库

你好,你问的是这个吗?我会帮你弄清楚,但这有点复杂,请不要误会我的意思。

这就是你提到的步骤。
然而,当我之前这样做时,我遇到了陷阱,特别是 cx_Oracle 版本必须与 Oracle 客户端版本相匹配。
你正在编写一个版本1 1 的客户端,但cx_Oracle有时有严格的版本要求,混合使用很容易出现问题。
例如,我上次在办公室做的时候是 2 02 3 年 1 0 月,当时客户端是 1 9 .8 ,cx_Oracle 应该支持 1 9 你需要去 cx_Oracle 或 PyPI 官方网站查看与你的客户端版本匹配的包。

还有一个地方是解压文件并复制dll的地方,注意路径。
您编写的内容已复制到 Lib\site-packages 中。
该路径可能是正确的,但根据 Anaconda 或 Python 的不同版本,它可能会有所不同(例如,您使用的是 Miniconda 还是 Anaconda?)。
当我之前这样做时,我从 envs\我的环境名称\Lib\site-packages 复制它。
您必须确认您自己的站点包所在的位置。
如果犯了这个错误,启动时可能找不到oci.dll,并且会报库加载错误。
我记得错误消息非常烦人,直接说 LoadLibrary 失败了。

你代码部分写的逻辑没有问题。
连接、执行、检索数据和保存 CSV 的过程均正确完成。
但使用后请务必关闭数据库连接和游标。
虽然最后写了db.close(),但是之前的变量名是conn和cursor。
您需要将它们更改为 conn.close() 和cursor.close() 吗?我上次这样做的时候,直接使用了conn.close(),不然感觉内存占用不会减少。

顺便说一下,还有ORACLE_HOME环境变量。
尽管您使用的是 Instant Client,但有时系统或 cx_Oracle 仍可能会检查此环境变量。
如果无法解决之前的 dll 复制问题,可以尝试将 ORACLE_HOME 设置为指向 Instant Client 解压目录,然后将 ORACLE_HOME\bin 添加到 PATH。
我认为这没有必要,但设置可以是更安全,特别是对于一些旧版本的cx_Oracle。

总结一下:版本对齐(cx_Oracle和客户端)、dll复制路径确认、变量名错误(conn和cursor)、ORACLE_HOME和PATH应该考虑。

无论如何,这取决于你,你应该小心每一步,特别是路径和版本号。
我还在想这个问题