我正在尝试使用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
错误。在
尝试使用此连接字符串:
它对我有用。在
根据Sqlalchemy Documentation上的文档,您可能应该使用cxu oracle引擎。连接字符串是:
使用服务名称或sid选项,如下所示:
^{pr2}$相关问题 更多 >
编程相关推荐