是否有一种方法可以更新Sqlalchemy引擎上的连接凭据



从我可以看出的那样,唯一的sqlalchemy让您与连接URL设置任何关系是在调用create_engine时。

我正在使用Vault的数据库秘密引擎来管理数据库中的短期凭据,这意味着我的应用程序应该足够强大,可以在任何给定时间处理凭据无效。

我不是在寻找如何 catch 凭据到期的情况(这似乎是简单的(。我想要的是一种替换的连接字符串(特别是用于新连接的用户名和密码(的方法。

我考虑过的一种选项是破坏引擎并重新创建新的选项,但是根据处置的文档,如果有任何连接,这似乎会导致内存泄漏...

人们似乎找不到的模式/食谱我似乎找不到吗?

我想我已经找到了我所忽略的东西:create_engine的调用中有一个可用的创建者回调,可为您提供对创建的连接的绝对控制。您将ORM抽象丢给了基础DBAPI/方言,但它使您可以随心所欲地更改连接。

所以我的实现看起来像这样:

import sqlalchemy
import cx_Oracle
def get_new_connection(self):
    username, password = get_new_creds_from_vault()
    return cx_Oracle.connect(user=username, password=password, dsn='details...')
engine = sqlalchemy.create_engine('oracle://', creator=get_new_connection)

相关内容

  • 没有找到相关文章

最新更新