是不是只有通过oracleinstant客户端才能访问cx泳u Oracle in FlaskSQLAlchemy?

2024-05-20 03:48:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的oracle数据库[OracleSlim]在Docker容器中启动并运行,我在容器中创建了一个用户表。它运行在0.0.0.0:1521上。我是否需要“安装oracle instant client”才能使cx\u oracle正常工作?在

我试过这个“sqlplus管理员”/欢迎光临121@ORCLCDB'容器中的连接字符串。它起作用了。在

from sqlalchemy import create_engine
import cx_Oracle
engine=create_engine('oracle://username:password@hostname:port/sid')

错误:

cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help

在我的flask Sqlalchemy的引擎对象中成功地连接了oracle。 欢迎使用新的ORM或用于连接oracle的包。 注意:我尚未在本地上安装oracle instant client 但是已经装在我的集装箱里了。在

UPDATED

现在我的Docker上运行着甲骨文集装箱。和我将在本地连接Python cx_Oracle中的那些。用下面的方法

^{pr2}$

是否可以连接到正在运行的容器本地主机:1521python cx_Oracle或Flask SQLAlchemy的帮助?在


Tags: dockerimportclient数据库集装箱create容器engine
2条回答

您确实需要oracle客户端库:

这来自cx_Oracle文档:

要将cx®Oracle 7与Python和Oracle数据库一起使用,您需要: Python2.7或3.5及更高版本。较旧版本的cx_Oracle可以与较旧版本的Python一起使用。 Oracle客户端库。它们可以来自免费的Oracle即时客户机,或者如果Python与数据库在同一台计算机上,则可以包含在Oracle数据库中。Linux、Windows和macOS支持Oracle客户端库版本18、12和11.2。用户也报告了其他平台的成功。 甲骨文数据库。Oracle的标准客户机-服务器版本互操作性允许cx-Oracle同时连接到较旧和较新的数据库。

如果sqlplus administrator/Welcome121@ORCLCDB'正在工作,则必须已经有可用的Oracle客户机库,因为sqlplus和cx\u Oracle都需要相同的Oracle库集。你的数据库可以验证你的查询。在

请检查SQL*Plus版本是否为11.2或更高版本。然后找出sqlplus和python的配置之间的区别。配置cx\U Oracle所需的环境变量,与sqlplus相同。如果安装了完整的Oracle客户机或Oracle DB,则可以在运行python之前使用source /usr/local/bin/oraenv设置环境。如果您有旧的oraclexe11.2,那么命令是source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

如果没有Oracle客户机库,请按照https://cx-oracle.readthedocs.io/en/latest/installation.html#installing-cx-oracle-on-linux安装它们,我建议使用ldconfig设置库搜索路径。在

相关问题 更多 >