Skip to content

Commit 4e76bad

Browse files
work in progress
1 parent 471af05 commit 4e76bad

1 file changed

Lines changed: 32 additions & 5 deletions

File tree

samples/web-app-sql-database/python/src/database.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,43 @@ def __init__(
6262
@classmethod
6363
def from_env(cls) -> 'SqlHelper':
6464
"""
65-
Create a SqlHelper instance using KEY_VAULT_NAME and SECRET_NAME environment variables.
66-
The secret must contain a SQL connection string. Uses DefaultAzureCredential for authentication.
65+
Create a SqlHelper instance from environment variables.
66+
67+
You can either pass the following set of variables, if you plan to use DefaultAzureCredential:
68+
- AZURE_CLIENT_ID
69+
- AZURE_CLIENT_SECRET
70+
- AZURE_TENANT_ID
71+
72+
Instead, if you plan to use the connection string directly, you can set:
73+
- SQL_SERVER
74+
- SQL_DATABASE
75+
- SQL_USERNAME
76+
- SQL_PASSWORD
6777
"""
6878
key_vault_name = os.environ.get("KEY_VAULT_NAME")
6979
secret_name = os.environ.get("SECRET_NAME")
7080

71-
if not key_vault_name or not secret_name:
72-
raise ValueError("KEY_VAULT_NAME and SECRET_NAME environment variables are required")
81+
if key_vault_name and secret_name:
82+
return cls.from_key_vault(key_vault_name, secret_name)
83+
84+
client_id = os.environ.get("AZURE_CLIENT_ID")
85+
client_secret = os.environ.get("AZURE_CLIENT_SECRET")
86+
tenant_id = os.environ.get("AZURE_TENANT_ID")
87+
server = os.environ.get("SQL_SERVER")
88+
database = os.environ.get("SQL_DATABASE")
89+
username = os.environ.get("SQL_USERNAME")
90+
password = os.environ.get("SQL_PASSWORD")
7391

74-
return cls.from_key_vault(key_vault_name, secret_name)
92+
if not any([client_id, client_secret, tenant_id, server, database, username, password]):
93+
raise ValueError("You properly need to define environment variables.")
94+
95+
return cls(
96+
server=server,
97+
database=database,
98+
username=username,
99+
password=password,
100+
use_azure_credential=all([client_id, client_secret, tenant_id])
101+
)
75102

76103
@classmethod
77104
def from_key_vault(cls, vault_name: str, secret_name: str) -> 'SqlHelper':

0 commit comments

Comments
 (0)