Stéphan Taljaard
05/26/2022, 10:45 AMimport os
from prefect.client import Secret
secret_name = 'JSON_SECRET'
# os.environ[
# f"PREFECT__CONTEXT__SECRETS__{secret_name}"
# ] = '{"db1": {"password": "password", "user": "userA"}, "db2": {"password": "P@$$w0rd", "user": "userB"}}'
secret_value = Secret(secret_name).get()
print(secret_value['db2']['password'])
# This prints 'P@$w0rd', not 'P@$$w0rd'
def create_conn_str(
username: str, password: str, host: str, database: str, port=None, dialect="mssql", driver="pymssql"
) -> str:
"""Create a SQLAlchemy database URL connection string"""
username_ = quote_plus(username)
password_ = quote_plus(password)
port_ = f":{port}" if port else ""
return f"{dialect}+{driver}://{username_}:{password_}@{host}{port_}/{database}"
Is my best option to save the value in the secret already url encoded (i.e. 'P%40%24%24w0rd'
), and then edit my create_conn_str
to not "double encode" a string?Kevin Kho
Stéphan Taljaard
05/26/2022, 2:29 PMKevin Kho