【发布时间】:2014-07-31 16:43:32
【问题描述】:
我有一个像这样的连接字符串
con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1"
ora1 是我的数据库的 SID。在 SQL Developer 中使用此信息可以正常工作,这意味着我可以毫无问题地进行连接和查询。
但是,如果我尝试使用此字符串连接到 Oracle,则会失败。
cx_Oracle.connect(con_str)
DatabaseError: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
如果ora1 是服务名称,则此连接字符串格式有效。
我看到其他问题似乎与我的问题相反(它适用于 SID,但不适用于服务名称)
- Using Oracle Service Names with SQLAlachemy
- Oracle SID and Service name; connection problems
- cx_Oracle & Connecting to Oracle DB Remotely
使用cx_Oracle、使用SID 而不是服务名称连接到Oracle 的正确方法是什么?如何在无需调整 TNSNAMES.ORA 文件的情况下执行此操作?我的应用程序在内部分发给许多用户,在处理在 Windows 计算机上没有管理员权限的用户时,对 TNSNAMES 文件进行更改并不理想。此外,当我使用服务名称时,我根本不需要触摸这个文件,并希望它保持这种状态。
【问题讨论】:
标签: python oracle python-2.7 cx-oracle