首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python 3.6连接到oracle 11g (11.2.0.3.0)数据库

如何使用python 3.6连接到oracle 11g (11.2.0.3.0)数据库
EN

Stack Overflow用户
提问于 2017-09-05 22:48:56
回答 1查看 824关注 0票数 1
代码语言:javascript
运行
复制
import cx_Oracle
print('connection start')
db_connection = cx_Oracle.connect("jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <Host1>)(PORT = <port_number>)) (ADDRESS = (PROTOCOL = TCP)(HOST = <Host2>)(PORT = <port_number>)) (FAILOVER=true)(LOAD_BALANCE=true) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <service_name>) (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5))))", "<username>", "<password>")
print(db_connection)
print('connection successful')

我正在尝试使用python 3.6.1 (Anaconda 4.4 dist)连接到oracle 11g数据库,但我遇到了以下错误。

代码语言:javascript
运行
复制
DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified

我可以使用Oracle-SQL-Developer版本17 (使用相同的连接字符串)成功连接到相同的oracle 11g数据库。

所以,我想知道我的代码是否有任何问题,或者cx_Oracle是否需要支持驱动程序等。任何帮助都将非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2017-09-06 07:06:44

Python是基于C语言的(像PHP的OCI8,node.js的node-oracledb,ruby的ruby-oci8等等),并使用不同的连接语法到JDBC (或SQL Developer -基于Java ),就像@Baski所说的那样。

看一看https://github.com/oracle/node-oracledb/blob/v2.0.13-dev/doc/api.md#connectionstrings,它显示了各种连接方法,比如:简单连接语法、网络服务名称和完整的嵌入式字符串。甚至有一节介绍如何将JDBC连接字符串更改为可由基于C的语言使用的字符串。

在您的示例中,您的cx_Oracle连接字符串将类似于:

代码语言:javascript
运行
复制
"(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <Host1>)(PORT = <port_number>)) (ADDRESS = (PROTOCOL = TCP)(HOST = <Host2>)(PORT = <port_number>)) (FAILOVER=true)(LOAD_BALANCE=true) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <service_name>) (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5))))"

(为什么要重试这么多次?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46057868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档