1
votes

Comment accéder à la chaîne de connexion db local.setting.json avec python

J'ai ce local.settings.json dans ma fonction Azure locale (déclenchée par Http)

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "python"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "valid connection string "
  }
}

Je veux accéder à la variable "SQLConnectionString" et l'utiliser dans mon code Python3.6. J'ai trouvé de nombreux guides pour accéder à cette variable avec C #, mais je n'ai pas eu la chance de trouver comment le faire via python.


2 commentaires

Cela vous dérange-t-il de définir les propriétés (telles que le nom d'utilisateur, le mot de passe, le port ...) séparément dans l'opération de connexion au lieu de la chaîne de connexion?


La chaîne de connexion sera masquée dans Azure Key Vault et accessible via des variables d'environnement Azure à l'avenir. Mais à des fins de test et de développement, j'aimerais avoir une chaîne de connexion dans local.settings.json.


3 Réponses :


2
votes

Vous pouvez accéder à ces paramètres en déclarant import os, puis en utilisant

setting = os.environ ["setting-name"] .

Plus d'informations - Référence pour les développeurs


1 commentaires

Essayé: import os .... print (os.environ ["SQLConnectionString"]) ou print (os.environ ["ConnectionStrings"]) Avec le même résultat: System.Private.CoreLib: Exception lors de l'exécution de la fonction: Functions.HttpTrigger . System.Private.CoreLib: résultat: exception d'échec: KeyError: 'SQLConnectionString'



2
votes

Je viens de le tester et j'ai rencontré la même erreur. Vous devez modifier votre local.setting.json comme suit:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "python"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "xxxxxxxx"
  }
}

mais pas

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "SQLConnectionString": "cnx = mysql.connector.connect(user=\"test@hurytestmysqlserver\", password=\"Password123\", host=\"testmysqlserver.mysql.database.azure.com\", port=3306, database=\"xxx\", .....)"
  }
}

Veuillez essayer.

Juste en complément ~ (je voulais fournir la solution "os.environ [xxx]" mais j'ai vu la solution fournie par HariHaran, haha ​​~)


1 commentaires

yup modifier le local.setting.json sans avoir imbriqué "ConnectionStrings": {"SQLConnectionString": "xxxxxxxx"} aidé. Merci beaucoup!



0
votes

En Python, vous devez faire ce qui suit:

import os
conn = os.environ["ConnectionStrings:SQLConnectionString"]


0 commentaires