是cx_Oracle在烧瓶SQLAlchemy中只能通过Oracle的即时客户端来访问?

问题描述 投票:0回答:2

我的Oracle数据库[OracleSlim]是向上和在多克尔容器中运行和我创建内部容器中的用户,表中。它的运行上0.0.0.0:1521。我是否需要作出cx_oracle工作“安装Oracle即时客户端”?

我想这个“sqlplus的管理员/ Welcome121 @ ORCLCDB”一个容器内的连接字符串。它的工作。

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

错误:

cx_Oracle.DatabaseError:DPI-1047:64位Oracle客户端库不能被加载:“libclntsh.so:无法打开共享对象文件:没有这样的文件或目录”。见https://oracle.github.io/odpi/doc/installation.html#linux求助

一个sucessfull Oracle连接在我的烧瓶的SQLAlchemy的引擎对象。新的ORM或用于连接Oracle包的欢迎。注:我还没有安装Oracle即时客户端上我的地方,但在我的容器已经安装了它。

更新

现在我有甲骨文运行在我的码头工人Container.And我要连接这些在Python cx_Oracle的地方。下面的方法,

import cx_Oracle
constr = 'system/oracle@//172.17.0.2:1521/orcl.localdomain'
conn = cx_Oracle.connect(constr)

是否有可能与上本地主机上运行的容器连接:使用Python cx_Oracle或烧瓶的SQLAlchemy的帮助下1521?

python docker sqlalchemy cx-oracle
2个回答
0
投票

你需要Oracle客户端库:

这来自cx_Oracle文档:

要使用Python和Oracle数据库使用cx_Oracle 7,您需要:Python的2.7或3.5和更高版本。 cx_Oracle的旧版本可以与旧版本的Python工作。 Oracle客户端库。这些都可以从免费的Oracle即时客户端,或者那些包含在Oracle数据库,如果Python是在同一台机器的数据库上。 Oracle客户端库版本18,12和11.2的支持在Linux,Windows和MacOS。用户也报告了与其它平台的成功。 Oracle数据库。 Oracle的标准客户端 - 服务器版本的互操作性允许cx_Oracle连接到新旧数据库。


0
投票

如果sqlplus administrator/Welcome121@ORCLCDB'工作,那么你必须已经拥有Oracle客户端库可用,因为两者的sqlplus和cx_Oracle需要相同的Oracle库。验证sqlplus中能真正查询数据库。

检查SQL * Plus版本是11.2或更高。然后制定出有什么区别你的SQLPLUS和python配置之间。配置需要cx_Oracle的环境变量相同的是,作为SQLPLUS。如果您已经安装了Oracle客户端或Oracle数据库,你可以用source /usr/local/bin/oraenv运行蟒蛇之前设置环境。如果你有旧的Oracle XE 11.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设置库搜索路径。

© www.soinside.com 2019 - 2024. All rights reserved.