如何解决当我们使用带有TNS网络服务名称的钱包等外部授权时,如何使用SqlAlchemy连接类似于cx_oracle的数据库
请考虑以下代码:- 现在下面的作品了
connection = cx_Oracle.connect(dsn = 'DSNAME')
但是当我对SqlAlchemy使用以下格式时,它不起作用,我得到TypeError: Invalid arguments dsn passed
:
connection = create_engine('oracle+cx_oracle://',dsn = 'DSNAME')
解决方法
SQLAlchemy需要数据库连接URI,their documentation上有一篇有关它的文章。它需要格式
oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
您尝试过以下吗?
connection = create_engine('oracle+cx_oracle://' + 'DSNAME')
,
看起来很旧的帖子,我尝试了下面的代码,它有效。希望这可以帮助。提供空的用户名/密码,它们是从钱包中读取的,位置在 sqlnet.ora 中提到
tnsnames.ora:
t1 = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ip)(PORT=1521)(KEY=dbpdb1))(CONNECT_DATA=(SERVICE_NAME=dbsvc1.oracle.com)))。
sqlnet.ora:
WALLET_LOCATION = (来源 = (方法 = 文件) (METHOD_DATA = (目录 = $walletdir) ) ) SQLNET.WALLET_OVERRIDE = TRUE
from sqlalchemy import create_engine
cstr='oracle://:@t1'
print(cstr)
engine = create_engine(
cstr,convert_unicode=False,echo=True
)
s='select * from emp'
conn = engine.connect()
result = conn.execute(s)
for row in result:
print (row)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。