标题几乎概括了它。我可以使用
sslrootcert
作为 create_engine
的参数进行连接,假设它指向我本地存储中的现有证书。但是,我想使用环境变量传递证书,或者从保险库加载它,等等。
这可能吗?不幸的是,我没有找到任何文档或示例。
如果这不可能,有人可以解释为什么吗?
如果这是一个愚蠢的问题,有人可以解释为什么吗?
编辑: 我希望能够从环境变量中将证书作为字符串加载。我想将我的证书作为字符串传递给
create_engine
函数。我不想加载指向文件系统中文件的环境变量字符串。
这会做你想做的事情吗(在这种情况下,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 提供任何您想要的内容,从环境变量或您想要的任何其他地方获取它们。