Accès ODBC à SQL Server depuis Linux avec Python

introduction

Je me demande s'il existe une telle utilisation autre que l'apprentissage automatique. .. .. C'est une niche. .. Je vais vous expliquer comment se connecter à Microsoft SQL Server à partir de Linux via ODBC. Lançons le test en Python.

Installer le pilote ODBC DataDirect SQL Server dans un environnement Linux

  1. Téléchargez la version d'essai du pilote ODBC SQL Server pour Linux à partir du site Web. ..

  2. Après le téléchargement, exécutez la commande Linux suivante pour déplacer le package vers un nouveau dossier.

mkdir datadirect

mv PROGRESS_DATADIRECT_ODBC_SQLSERVER_LINUX_XX.tar.Z datadirect/

cd datadirect/
  1. Extrayez le package avec la commande suivante.
tar -xvf PROGRESS_DATADIRECT_ODBC_SQLSERVER_LINUX_64.tar.Z
  1. Exécutez la commande suivante dans le terminal pour installer l'interpréteur KSH.

Pour Debian

sudo apt-get install ksh

Pour CentOS / RHEL

sudo yum install ksh
  1. Exécutez le script suivant dans le terminal pour exécuter l'installation.
./unixmi.ksh
  1. Lorsque l'invite s'affiche, entrez Enter ou "Y" pour vérifier le système d'exploitation.

image.png

  1. J'accepte le contrat de licence avec "oui". image.png

  2. Entrez votre nom et le nom de votre société à l'invite. Entrez EVAL pour le numéro de série et la clé. image.png

  3. Un écran apparaîtra vous demandant d'installer tous les pilotes inclus ou de sélectionner un pilote à installer. Ici, sélectionnez l'option 2.

image.png

  1. Une liste des pilotes à installer s'affiche. Sélectionnez l'option 11'SQL Server Wire Protocol '.

image.png

  1. Vérifiez le chemin. Si vous ne pouvez pas le confirmer, entrez le chemin.

image.png

  1. Buvez du thé et attendez que l'installation soit terminée. Si vous voulez installer un autre pilote Linux, vous pouvez essayer différentes choses avec "Y", mais cette fois, utilisez "N" pour quitter le programme d'installation.

image.png

Paramètres du pilote ODBC SQL Server

  1. Chemin d'installation /Progress/DataDirect/Connect_64_for_ODBC_71 (La fin diffère selon la version) Accédez à et exécutez la commande suivante dans le terminal. Ajoutez les variables d'environnement ODBCINI, ODBCINST, LD_LIBRARY_PATH.
sudo chmod +x odbc.sh

./odbc.sh
  1. Utilisez la commande suivante pour vérifier si les variables ODBCINI, ODBCINST et LD_LIBRARY_PATH sont installées normalement. Vous devriez voir le chemin du fichier odbc.ini.
echo $ODBCINI

./odbc.sh
  1. Si les variables d'environnement ne sont pas ajoutées correctement, ajoutez ces valeurs à ~ / .bashrc.
export LD_LIBRARY_PATH=/install_path/Progress/DataDirect/Connect64_for_ODBC_71/lib

export ODBCINI=/ install_path/Progress/DataDirect/Connect64_for_ODBC_71/odbc.ini

export ODBCINST=/ install_path/Progress/DataDirect/Connect64_for_ODBC_71/odbcinst.ini
  1. Actualisez les paramètres du terminal avec la commande suivante.
source ~/.bashrc
  1. Chemin /install_path/Progress/DataDirect/Connect64_for_ODBC_71/odbc.ini Ouvrez le fichier odbc.ini situé dans et configurez les détails de connexion SQL Server comme indiqué dans l'exemple odbc.ini suivant.
[ODBC Data Sources]

SQL Server Legacy Wire Protocol=DataDirect 7.1 SQL Server Legacy Wire Protocol

[ODBC]
IANAAppCodePage=4

InstallDir=/home/progress/Progress/DataDirect/Connect64_for_ODBC_71

Trace=0

TraceFile=odbctrace.out

TraceDll=/home/progress/Progress/DataDirect/Connect64_for_ODBC_71/lib/ddtrc27.so

[SQL Server Wire Protocol]
Driver=/home/progress/Progress/DataDirect/Connect64_for_ODBC_71/lib/ddsqls27.so

Description=DataDirect 7.1 SQL Server Wire Protocol

AlternateServers=

AlwaysReportTriggerResults=0

AnsiNPW=1

ApplicationName=

ApplicationUsingThreads=1

AuthenticationMethod=1

BulkBinaryThreshold=32

BulkCharacterThreshold=-1

BulkLoadBatchSize=1024

BulkLoadFieldDelimiter=

BulkLoadOptions=2

BulkLoadRecordDelimiter=

ConnectionReset=0

ConnectionRetryCount=0

ConnectionRetryDelay=3

Database=<database_name>

EnableBulkLoad=0

EnableQuotedIdentifiers=0

EncryptionMethod=0

FailoverGranularity=0

FailoverMode=0

FailoverPreconnect=0

FetchTSWTZasTimestamp=0

FetchTWFSasTime=1

GSSClient=native

HostName=<server_name>

HostNameInCertificate=

InitializationString=

Language=

LoadBalanceTimeout=0

LoadBalancing=0

LoginTimeout=15

LogonID=<logon id> (optional)

MaxPoolSize=100

MinPoolSize=0

PacketSize=-1

Password=<password> (optional)

Pooling=0

PortNumber=1433

QueryTimeout=0

ReportCodePageConversionErrors=0

SnapshotSerializable=0

TrustStore=

TrustStorePassword=

ValidateServerCertificate=1

WorkStationID=

XMLDescribeType=-10

  1. Enregistrez le fichier odbc.ini et quittez.

Test de connexion ODBC SQL Server

  1. Testons le pilote ODBC. Cette fois, faisons-le avec un simple script Python. Exécutez la commande suivante pour installer le package pyodbc.

pip install pyodbc

Si vous obtenez une exception indiquant que la bibliothèque <sql.h> est introuvable, vous devrez peut-être installer le package unixODBC. Vous pouvez l'installer en exécutant la commande suivante.

Debain:

sudo apt-get install unixodbc unixodbc-dev

CentOS/Redhat:

sudo apt-get install unixODBC unixODBC-devel
  1. Enregistrez le script suivant dans un fichier python et exécutez-le. Vérifiez si vous pouvez vous connecter à SQL Server avec succès.
import pyodbc

 

##connecting to your database through ODBC

cnxn = pyodbc.connect('DSN=SQL Server Wire Protocol;UID=sa;PWD=pass', autocommit=True)

cursor = cnxn.cursor()
  1. Après avoir réussi à vous connecter à SQL Server, vous pouvez ajouter le script suivant au fichier ci-dessus pour générer la table dans la base de données.
##Print TableNames

for row in cursor.tables():

                if row.table_type == "TABLE":

                                print (row.table_name)

                                print (row)
  1. Vous pouvez également ajouter le script suivant et exécuter le script. Notez qu'il existe une base de données Northwind que vous essayez d'interroger.
##Executing a simple query and printing the records

cursor.execute("SELECT EmployeeID, LastName, FirstName, Address, City, Region from Northwind.dbo.Employees")

for row in cursor.fetchall():

    print (row)

Cet article utilise le mode d'authentification SQL Server, mais les pilotes ODBC et JDBC DataDirect SQL Server prennent également en charge l'authentification Windows et Kerberos, c'est donc une autre fois.

Recommended Posts

Accès ODBC à SQL Server depuis Linux avec Python
Connexion ODBC à FileMaker 11 Server Advanced avec Python 3
Intégration de données depuis l'application Python sur Linux vers Amazon Redshift avec ODBC
Commande Yum pour accéder à MySQL avec Python 3 sous Linux
Obtenir des données de la base de données via ODBC avec Python (Access)
Comment accéder à wikipedia depuis python
Accédez au serveur SQL de l'hôte avec python27 / pyodbc sur le conteneur
[Didacticiel d'analyse Python en base de données avec SQL Server 2017]
Notification push du serveur Python vers Android
sql à sql
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
Comment accéder à RDS depuis Lambda (python)
[Amazon Linux] Passage de la série Python 2 à la série Python 3
Intégration de données depuis l'application Python sur Windows vers Amazon Redshift avec ODBC
Envoyer un message de Slack à un serveur Python
Comment bien gérer les commandes Linux à partir de Python
Sauvegarde de QNAP vers Linux avec rsync
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Serveur local avec python
[Didacticiel d'analyse Python dans la base de données avec SQL Server 2017] Étape 2: importer des données dans SQL Server à l'aide de PowerShell
Comment "mettre en cache" l'accès à la mémoire FPGA à partir de Linux
Comment récupérer des données d'image de Flickr avec Python
De l'achat d'un ordinateur à l'exécution d'un programme sur python
[Linux] [Python] [Pandas] Charger la base de données Microsoft Access (* .mdb) avec Pandas
Connectez-vous à BigQuery avec Python
Publier de Python vers Slack
Flirter de PHP à Python
Publiez sur Slack avec Python 3
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Accéder à Oracle DB depuis Python
Passer de python2.7 à python3.6 (centos7)
Basculer python vers 2.7 avec des alternatives
Écrire en csv avec Python
Serveur HTTP facile avec Python
Accédez à Google Drive avec Python
écran et écran partagé avec connexion python et ssh au serveur distant
[Linux] Copie des données de Linux vers Windows avec un script shell
Essayez d'extraire la table de données d'Azure SQL Server avec pyodbc
Introduction à Python pour les utilisateurs de VBA - Appeler Python depuis Excel avec xlwings -
[Python] Exportez régulièrement de CloudWatch Logs vers S3 avec Lambda
Appelez Matlab depuis Python pour optimiser
[Scp] Copiez les fichiers localement depuis un serveur Linux avec ssh scp de Tera Term
Python: comment utiliser async avec
Appeler C depuis Python avec DragonFFI
Accès en indice au tableau numpy python
Lien pour commencer avec python
Pilote de périphérique pour accéder à la mémoire FPGA à partir de Linux
Utilisation de Rstan de Python avec PypeR
[Python] Ecrire dans un fichier csv avec Python
Installez Python à partir des sources avec Ansible
Ravi de vous rencontrer avec python
Publication de Python sur la chronologie Facebook
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Utilisez DynamoDB à partir de Python comme SQL.
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
Convertir la liste en DataFrame avec python