web-dev-qa-db-fra.com

Connectez Python à la base de données SQL Server

Lorsque j'essaie de connecter python à SQL Server, l'erreur suivante s'est produite.

"pyodbc.Error: ('08001', '[08001] [Microsoft] [ODBC SQL Server Pilote] [DBNETLIB] SQL Server n'existe pas ou l'accès est refusé. (17) .__ (SQLDriverConnect)')"

Voici le mon code.

import pyodbc
connection = pyodbc.connect("Driver={SQL Server}; Server=localhost;          
Database=emotionDetection; uid=uname ;pwd=pw;Trusted_Connection=yes")
cursor = connection.cursor()
SQLCommand = ("INSERT INTO emotion"  "(happy, sad, angry) "
          "VALUES (?,?,?)")
Values = ['smile','cry','blame']
cursor.execute(SQLCommand,Values)
connection.commit()
connection.close()

Ceci est ma première tentative de connexion Python avec SQL Server . Je ne sais pas ce que seraient le nom du pilote, le nom du serveur, le nom d'utilisateur et le mot de passe. Avez-vous une idée de ce que devrait être ma configuration? Aidez-moi, s'il vous plaît.

6
Chathurika

CONNEXION DE WINDOWS À LA BASE DE DONNÉES DU SERVEUR MS SQL:

Voici un exemple que je m'utilise moi-même pour me connecter à la table de base de données MS SQL avec un script Python:

import pyodbc
server = 'ip_database_server'
database = 'database_name'
username = 'user_name'
password = 'user_password'
driver = '{SQL Server}' # Driver you need to connect to the database
port = '1433'
cnn = pyodbc.connect('DRIVER='+driver+';PORT=port;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+
                 ';PWD='+password)
cursor = cnn.cursor()

'Utilisateur' et 'mot de passe' et 'nom_table' sont des attributs définis par l'administrateur de la base de données, et il doit vous les donner. Le port auquel se connecter est également défini par l'administrateur. Si vous essayez de vous connecter depuis un périphérique Windows à la base de données, accédez à ODBC, administrateur de source de données à partir de Windows, et vérifiez si vous avez installé le pilote pilote

Où est l'administrateur de la source de données ODBC sur un ordinateur Windows.

 ODBC Data Source Admin in Windows

L'image est en espagnol, mais il vous suffit de cliquer sur l'onglet "Pilotes" et de vérifier si le pilote est présent comme dans l'image. 

CONNEXION DE LA BASE DE DONNÉES DU SERVEUR LINUX/UNIX À MS SQL:

Si vous travaillez sous Linux/Unix, installez un gestionnaire ODBC tel que 'FreeTDS' et 'unixODBC'. Pour les configurer, vous trouverez des exemples dans les liens suivants:

Exemple: Connexion à Microsoft SQL Server à partir de Linux/Unix

Exemple: Installation et configuration de ODBC

7
BSP

Je pense que vous devriez vérifier ceci . stackoverflow répondre à propos de odbc

Aussi, quel serveur SQL utilisez-vous?

2
june song

La bibliothèque pymssql ne nécessite aucun pilote et fonctionne à la fois sous Windows et Ubunutu.

import pymssql
import pandas as pd

server = 'yourusername'
username = 'yourusername'
password = 'yourpassword'
database = 'yourdatabase'
table_name = 'yourtablename'
conn = pymssql.connect(Host=server,user=username,password=password,database=database)
dat = pd.read_sql("select * from table_name,conn)
0
Shubh

Exemples de travail fonctionnent le mieux pour moi:

Besoin de pilotes Mac ODBC?

Si vous avez besoin du pilote Mac, j’ai utilisé homebrew et j'ai trouvé les commandes ici

Détail

Personnellement, j’apprends mieux en utilisant l’ingénierie inversée. Cela dit, je partage un de mes exemples. C’est peut-être un peu brutal, mais je développe mes compétences en Python. 

Le script que j'ai créé me permet de connecter mon Mac OS à une instance AWS RDS.

Le script entier est un copier/coller avec une petite modification pour vous sur les informations de votre serveur, et vous êtes en cours d'exécution . Il suffit de modifier ces lignes pour vous connecter.

server = 'yourusername'
username = 'yourusername'
password = 'yourforgottencomplicatedpassword'
database = 'yourdatabase'

Ensuite, exécutez le fichier: python3 ~/Your/path/pyodbc_mssqldbtest.py et vous devriez être défini.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# =============================================================================
# Created By  : Jeromie Kirchoff
# Created Date: Mon July 31 22:32:00 PDT 2018
# FILENAME: pyodbc_mssqldbtest.py
# =============================================================================
"""The Module Has Been Build for Interaction with MSSQL DBs To Test the con."""
# =============================================================================
# Thanks to this post for headers https://stackoverflow.com/q/12704305/1896134
# Answer to an SO question: https://stackoverflow.com/q/42433408/1896134
# =============================================================================

import pyodbc


def runningwithqueries(query):
    """The Module Has Been Build to {Open, Run & Close} query connection."""
    print("\nRunning Query: " + str(query) + "\nResult :\n")
    crsr = cnxn.execute(query)
    columns = [column[0] for column in crsr.description]
    print(columns)
    for row in crsr.fetchall():
        print(row)
    crsr.close()

# =============================================================================
# SET VARIABLES NEEDED FOR SERVER CONNECTION
# =============================================================================
server = 'yourusername'
username = 'yourusername'
password = 'yourforgottencomplicatedpassword'
database = 'yourdatabase'

connStr = (r'DRIVER={ODBC Driver 17 for SQL Server};' +
           r"Integrated Security=True;" +
           r'SERVER=' + server +
           r';UID=' + username +
           r';PWD=' + password +
           r';DSN=MSSQL-PYTHON' +
           r';DATABASE=' + database + ';'
           )

print("Your Connection String:\n" + str(connStr) + "\n\n")

# =============================================================================
# CONNECT TO THE DB
# =============================================================================
cnxn = pyodbc.connect(connStr, autocommit=True)

# =============================================================================
# SET QUERIES TO VARIABLES
# =============================================================================
SQLQUERY1 = ("SELECT @@VERSION;")
SQLQUERY2 = ("SELECT * FROM sys.schemas;")
SQLQUERY3 = ("SELECT * FROM INFORMATION_SCHEMA.TABLES;")
SQLQUERY4 = ("SELECT * FROM INFORMATION_SCHEMA.COLUMNS;")
SQLQUERY5 = ("SELECT * FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS;")
SQLQUERY6 = ("EXEC sp_databases;")
SQLQUERY7 = ("EXEC sp_who2 'active';")

# =============================================================================
# RUN QUERIES
# YOU CAN RUN AS MANY QUERIES AS LONG AS THE CONNECTION IS OPEN TO THE DB
# =============================================================================
runningwithqueries(SQLQUERY1)
runningwithqueries(SQLQUERY2)
runningwithqueries(SQLQUERY3)
runningwithqueries(SQLQUERY4)
runningwithqueries(SQLQUERY5)
runningwithqueries(SQLQUERY6)
runningwithqueries(SQLQUERY7)

# =============================================================================
# CLOSE THE CONNECTION TO THE DB
# =============================================================================
cnxn.close()
0
JayRizzo