gpt4 book ai didi

Python-sqlalchemy-oracle连接无法连接到SID

转载 作者:行者123 更新时间:2023-12-01 04:01:18 25 4
gpt4 key购买 nike

我正在尝试使用sqlalchemy连接到Oracle DB。鉴于确切的语法显示在 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

以下调用最初无需服务名称即可运行

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

但尝试连接时失败,并出现错误,提示未提供 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处的文档,您可能应该使用 cx_oracle 引擎。连接字符串是:

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

带有 service_name 或 sid 选项,如下所示:

oracle+cx_oracle://user:pass@host:1521/?service_name=hr
oracle+cx_oracle://user:pass@host:1521/?sid=hr

关于Python-sqlalchemy-oracle连接无法连接到SID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36455358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com