是否可以使用 SQLAlchemy create_engine 并从环境变量传递证书?

问题描述 投票:0回答:1

标题几乎概括了它。我可以使用

sslrootcert
作为
create_engine
的参数进行连接,假设它指向我本地存储中的现有证书。但是,我想使用环境变量传递证书,或者从保险库加载它,等等。

这可能吗?不幸的是,我没有找到任何文档或示例。

如果这不可能,有人可以解释为什么吗?

如果这是一个愚蠢的问题,有人可以解释为什么吗?

编辑: 我希望能够从环境变量中将证书作为字符串加载。我想将我的证书作为字符串传递给

create_engine
函数。我不想加载指向文件系统中文件的环境变量字符串。

python sql python-3.x sqlalchemy psycopg2
1个回答
0
投票

这会做你想做的事情吗(在这种情况下,SSL 变量,如果可用,会更早地输入到这个方法中)?

global qry_engine, meta, tbl_application, tbl_application_table
ssl_args = {}
if ssl_server_cert_path is not None:
    ssl_args['ca'] = ssl_server_cert_path
if ssl_client_cert_path is not None:
    ssl_args['cert'] = ssl_client_cert_path
if ssl_key_cert_path is not None:
    ssl_args['key'] = ssl_key_cert_path
if ssl_args != {}:
    ssl_args['check_hostname'] = False
    ssl_args = {'ssl': ssl_args}

try:
    # Adding support for local_infile flag, so we can use the LOAD DATA command to load from files
    connect_args = ssl_args
    connect_args['local_infile'] = True
    qry_engine = create_engine('mysql+pymysql://' + db_uid + ':' + db_pw + '@' + db_addr, connect_args=connect_args,                                   
    pool_recycle=3600, echo=False, future=True)

您可以为 ssl_args 提供任何您想要的内容,从环境变量或您想要的任何其他地方获取它们。

© www.soinside.com 2019 - 2024. All rights reserved.