2017-08-24 3 views
0

J'essaie de me connecter à la source de données SAP HANA via du code Python. J'ai réussi à établir une connexion. J'ai une chaîne de données brutes dans mon code comme suit:Connexion à SAP HANA à l'aide d'un pilote HDODBC sans UID et PWD dans le code

db = pyodbc.connect(driver = '{HDBODBC}', UID='username', PWD='password', SERVERNODE='server:<port_no>') 

Cependant, je ne veux pas l'UID et PWD dans ma chaîne. J'ai configuré une connexion DSN à l'aide du gestionnaire ODBC sous Windows. Mais, je dois encore entrer mon nom d'utilisateur et PWD comme suit:

db = pyodbc.connect(DSN="MyDSN", UID='username', PWD='password') 

Comment puis-je configurer une connexion sans mon UID et PWD affiché dans le code python?

Répondre

0

par exemple créer un fichier dans un paramètre de connexion lieu et la charge sécurisée (UID, PWD mot de passe crypté (heshkod)) à partir de ce fichier

+0

Cela peut fonctionner. Mais connaissez-vous un moyen quelconque dans Windows où je peux mettre en place une connexion de confiance ou SSO? Donc je devrais entrer UID et PWD seulement une fois quelque part. – hshantanu

0

Cette exigence est relativement facile à remplir. Le logiciel client SAP HANA (le package qui contient également le pilote ODBC) fournit un programme permettant de configurer un magasin sécurisé pour les données d'ouverture de session: hdbuserstore. En my blog J'ai expliqué comment cela fonctionne en détail.

Les étapes de base sont

  1. créer les hdbuserstore entrées pour l'utilisateur du système d'exploitation que doit utiliser l'application.

    Syntax: hdbuserstore SET <KEY> <ENV> <USERNAME> <PASSWORD> 
    Example: hdbuserstore SET millerj "localhost:30115" JohnMiller 2wsx$RFV 
    
  2. Les besoins hdbuserstore clés à visée à la connexion ODBC. Pour ce faire, remplissez le paramètre SERVERNODE avec @<KEYNAME> au lieu de l'adresse réelle du serveur.
    Pour l'exemple ci-dessus, la valeur serait @millerj.

Et c'est vraiment tout. Le pilote ODBC essaiera de rechercher l'entrée hdbuserstore fournie lors de la connexion et l'utilisera pour se connecter à la base de données.

Vérifiez the documentation pour plus d'informations à ce sujet.