使用sqlalchemy dburi和Oracle使用外部密码存储?

时间:2016-05-26 22:12:56

标签: python oracle sqlalchemy turbogears

我正在尝试使用外部密码存储(Oracle Wallet)来使用oracle sqlalchemy dburi

我尝试使用标准的sqlplus语法进行外部密码存储而没有运气..

sqlalchemy.dburi="oracle:///@PROD"

我可以使用sqlplus成功连接如下:

sqlplus /@PROD

我无法找到有关如何使用sqlalchemy或turbogears的外部密码存储的任何信息?

2 个答案:

答案 0 :(得分:0)

关闭顶部评论:确保您运行的是cx_oracle(http://cx-oracle.readthedocs.io/en/latest/releasenotes.html)的5.2.1+版本。在此之前,SessionPools中存在一个错误。

答案 1 :(得分:0)

在深入研究sqlalchemy的源代码的基础上,正确的方法是将next-build的{​​{1}}属性(而不是username属性)设置为您的TNS别名给你的钱包。

使用database

sqlalchemy.engine.url.URL

使用sqlalchemy.engine.url.make_url

import sqlalchemy.engine.url

url = url.make_url('oracle+cx_oracle://')
url.username = '/@PROD'
engine = create_engine(url)

这是因为最终,要使cx_Oracle使用Oracle Wallet,必须在sqlalchemy.engine.url.URL中使用import sqlalchemy.engine.url url = url.URL('oracle+cx_oracle', username='/@PROD') engine = create_engine(url) 参数。

例如

user