Dans un monde parfait d'administrateur de bases de données, tout serait pareil. Tous les serveurs seraient identiques et exécuteraient les mêmes charges de travail. Ils sont plus faciles à gérer. Mais ce n'est pas le cas. De nos jours, les administrateurs système doivent gérer différents environnements. Cela ne pourrait pas être plus évident dans le besoin d'effectuer des requêtes SQL à partir d'une machine Linux. Dans cet article, vous apprendrez à vous connecter à SQL Server à partir de Linux !
Pas un lecteur? Regardez ce didacticiel vidéo associé ! Vous ne voyez pas la vidéo ? Assurez-vous que votre bloqueur de publicités est désactivé.Une façon de se connecter à SQL Server à partir de Linux consiste à utiliser un module Python. Mais avant d'aller aussi loin, voyons d'abord dans quel environnement je travaille.
Dans cet article, je vais démontrer cette tâche en utilisant Ubuntu 16.04 et je vais me connecter à SQL Server 2012 R2. Mais la même technique devrait également s'appliquer aux autres versions de Linux et aux versions de SQL Server. Administrateurs de bases de données, réjouissez-vous !
Prérequis
Pour commencer, vous devrez installer quelques prérequis. Tout d'abord, puisque vous vous connecterez à une instance SQL Server à partir de Python, vous aurez besoin d'un module Python. Un module Python courant pour se connecter à SQL s'appelle PyODBC. Ce module permet d'interroger des bases de données SQL via ODBC via un pilote ODBC SQL Server pour Linux. Pour installer la dernière version, utilisez pip (le gestionnaire de packages Python).
> sudo pip install pyodbc
Si cela ne fonctionne pas, vous n'avez peut-être pas installé pip. Pour installer pip :
> sudo easy_install pip
Ensuite, vous devez créer un script Python. Je vais appeler celui-ci sql_server.py . Pour créer un script Python, créez d'abord un fichier vide.
> touch sql_server.py
Ensuite, en utilisant l'éditeur de votre choix, ajoutez les lignes ci-dessous. Le shebang suivi du chemin vers le binaire Python indique à l'interpréteur qu'il s'agit d'un script Python. Le import
L'instruction vous permet ensuite d'appeler les méthodes de la bibliothèque à l'intérieur du module pyodbc. Enregistrez ce script.
!/usr/bin/python
import pyodbc
Une fois que vous avez créé le script Python, exécutez-le :
> python sql_server.py
Si cela s'exécute sans erreur, le module pyodbc a été installé avec succès.
Ensuite, ajoutez le code pour exécuter une requête test. Pour ce faire, créez une chaîne ODBC.
Pour en savoir plus sur la création de chaînes ODBC, voici une bonne ressource.
La chaîne ODBC est pointilleuse sur ce qui est inclus. Il a fallu un certain temps pour comprendre comment faire fonctionner cela, mais voici à quoi ressemble le mien. Ci-dessous, je passe la chaîne ODBC comme argument au connect()
méthode qui est incluse avec le pyodbc module.
conn = pyodbc.connect('DRIVER={FreeTDS};SERVER=server.domain.local;PORT=1433;UID=DOMAIN\user;PWD=mypassword;DATABASE=mydatabasename;UseNTLMv2=yes;TDS_Version=8.0;Trusted_Domain=domain.local;')
La plupart de la chaîne ODBC est évidente, mais un fait important est la double barre oblique inverse pour l'UID . Assurez-vous toujours que vous avez échappé les barres obliques inverses dans la chaîne ODBC. De plus, certaines des options que j'utilise sont facultatives.
En outre, vous pouvez soit utiliser le nom d'hôte pour SERVER
comme je l'ai fait ci-dessus ou vous pouvez utiliser l'adresse IP de SQL Server.
N'hésitez pas à les ajouter ou à les supprimer comme bon vous semble pour correspondre à votre serveur SQL.
Ensuite, vous devez créer un objet curseur qui vous permettra de transmettre une instruction T-SQL à. Cela se fait avec le cursor()
méthode.
cursor = conn.cursor()
Vous avez maintenant un objet avec un execute()
méthode qui peut être utilisée pour transmettre n'importe quelle instruction T-SQL dans laquelle nous aimerions, comme indiqué ci-dessous. Cela crée un rows
variable contenant le jeu de données résultant.
cursor.execute("SELECT * FROM <tablename>")
rows = cursor.fetchall()
Vous êtes maintenant au point où vous devrez décider quoi faire avec l'ensemble de données. Vous pouvez envoyer les résultats dans un fichier CSV, placer les résultats dans une autre base de données ou écrire le contenu sur la console.
Ci-dessous, j'imprime les résultats sur la console si l'ensemble de données est rempli.
if rows:
print(rows)
Vous pouvez voir que si l'ensemble de données est imprimé sur la console, la sortie n'est pas trop jolie. À ce stade, c'est à vous de décider comment formater ou analyser les données de la base de données. Le plus dur est passé !
Vous allez maintenant vous retrouver avec un script qui ressemble à ceci :
!/usr/bin/python
import pyodbc
conn = pyodbc.connect('DRIVER={FreeTDS};SERVER=server.domain.local;PORT=1433;UID=DOMAIN\user;PWD=mypassword;DATABASE=mydatabasename;UseNTLMv2=yes;TDS_Version=8.0;Trusted_Domain=domain.local;')
cursor.execute("SELECT * FROM <tablename>")
rows = cursor.fetchall()
if rows:
print(rows)
Résumé
Dans cet article de blog, vous avez appris à utiliser le pyodbc Module Python sous Linux pour se connecter à une source de données SQL Server. La partie la plus difficile pour moi a été de comprendre la chaîne ODBC, mais une fois que vous avez compris cela, vous devriez naviguer en douceur.
Une fois que vous vous connectez depuis Linux, pourquoi ne pas voir si vous pouvez augmenter les performances à l'aide de compteurs de performances ?