Python sqlalchemy oracle连接无法连接到SID

2024-05-28 20:32:24 发布

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

我正在尝试使用sqlalchemy连接到oracle数据库。考虑到sqlalchemy documentation中显示了确切的语法,我希望下面的代码能起作用。在

oracle_db = sqlalchemy.create_engine('oracle://user:pass@server:1521/dev')

但这会导致错误:

dsn = self.dbapi.makedsn(url.host, port, **makedsn_kwargs) TypeError: makedsn() takes no keyword arguments

下面的调用最初在没有服务名称的情况下工作

^{pr2}$

但是当尝试连接时失败,并出现错误,抱怨没有提供SERVICE_NAME。在

ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

奇怪的是,它直接与cx_Oracle配合使用:

con = cx_Oracle.connect('user/pass@server:1521/dev')

我应该如何连接到特定的服务?在

尝试

我试图从this question显式地使用cx_Oracle.makedsn(),但也没有什么好运气。在

正在尝试在连接字符串中使用?选项

oracle_db = sqlalchemy.create_engine('oracle://user:pass@server:1521/?sid=dev')

一开始是有效的,但是当我尝试oracle_db.connect()时,我得到了上面显示的相同的ORA-12504错误。在


Tags: namedevdbserversqlalchemy错误createservice
2条回答

尝试使用此连接字符串:

engine = create_engine("oracle+cx_oracle://<username>:<password>@(DESCRIPTION = (LOAD_BALANCE=on) (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = <host>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = devdb)))") 

它对我有用。在

根据Sqlalchemy Documentation上的文档,您可能应该使用cxu oracle引擎。连接字符串是:

oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]

使用服务名称或sid选项,如下所示:

^{pr2}$

相关问题 更多 >

    热门问题