2017-02-06 3 views
1

Ich versuche, eine Verbindung zu einem Azure (MSSQL-Server) mit Python und Pypyodbc, aber ich bekomme eine Fehlermeldung messagesage, die liest "pypyodbc.ProgrammingError: ('', 'SQL_ERROR')"ProgrammingError Verbindung zu Azure mit Python Pypyodbc

Ich habe viele verschiedene Wege versucht, die Verbindung herzustellen, aber es gibt immer den gleichen Fehler. Mit Tableau kann ich beispielsweise in die Datenbank gelangen, sodass meine Anmeldeinformationen funktionieren.

pypyodbc.connect("DRIVER={SQL Server};server='tcp:mssql-server',Database='analytics',uid='[email protected]',pw='secret'") 

oder

pypyodbc.connect('Driver={SQL Server};Server=tcp:mssqlserver;Database=analytics;[email protected];PWD=secret') 

oder

pypyodbc.connect('Driver={SQL Server};Server=tcp:mssqlserver;Database=analytics;[email protected];Pwd=secret;') 

Und ganz wenige andere, die so aussehen, aber mit unterschiedlichen Kurstypen, unterschiedlichen Kapitelle etcetera, aber es ist nicht einmal wichtig welche Zugangsdaten ich dort eingegeben habe, es gibt nur einen Programmierfehler, egal was ich mache. Muss ich andere Pakete installieren, um pypyodbc arbeiten zu lassen? Ich überprüfte das Paket mit "dir" und das zeigt den gesamten Inhalt einschließlich der Connect-Funktion.

Kann jemand sehen, welchen entscheidenden Teil ich vermisse?

+0

Welche Art von 'mssql' haben Sie für Azure verwendet? Azure SQL-Datenbank oder SQL Server auf Azure VM? Und versuchen Sie 'Driver = {ODBC Driver 13 für SQL Server};' anstelle von 'Driver = {SQL Server};' zu verwenden und versuchen Sie folgende Parameter hinzuzufügen: Encrypt = yes; TrustServerCertificate = no; Connection Timeout = 30; 'zu Ihrer aktuellen Verbindungszeichenfolge. Jedes Update, bitte zögern Sie nicht mich zu informieren. –

+0

Letzte Nacht habe ich geändert und ein paar weitere Dinge hinzugefügt, indem ich die Anweisungen auf dieser [Seite] (https://github.com/lionheart/django-pyodbc/wiki/Mac-setup-to-connect-to-a-MS) befolge -SQL-Server.Nach der Installation von FreeTDS und unixodbc, die Fehlermeldung geändert zu und Betriebsfehler: Kann lib 'SQL Server' nicht öffnen: Datei nicht gefunden "). Wenn ich den Treiber zu dem, was Sie vorschlagen, ändern, erhalte ich die Nachricht kann 't open lib' ODBC-Treiber 13 für SQL Server ': Datei nicht gefunden "). Könnte es sein, dass ich irgendwo einen Pfad ändern muss, um ihn zum richtigen Treiber zu leiten? –

+0

Und es ist Azure SQL DB v12 –

Antwort

1

Haben Sie msodbcsql installiert? Install der ODBC-Treiber, abhängig von Ihrem Betriebssystem:

Für MacOS

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 
brew tap microsoft/msodbcsql https://github.com/Microsoft/homebrew-msodbcsql 
brew update 
brew install msodbcsql 
sudo pip install pyodbc 

Für Linux

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql.list 
exit 
sudo apt-get update 
sudo apt-get install msodbcsql mssql-tools unixodbc-dev-utf16 
sudo pip install pyodbc 

Holen Sie sich die Apostrophe gereinigt weg, ersetzen SQL Server mit ODBC Driver 13 for SQL und Sie sollten diese haben:

pypyodbc.connect("DRIVER={ODBC Driver 13 for SQL Server};SERVER=tcp:mssqlserver;DATABASE=analytics;[email protected];PWD=secret;TrustServerCertificate=no;Connection Timeout=60") 

Überprüfen Sie bei diesem Fehler pypyodbc.OperationalError: (u'HYT00', u'[HYT00] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired') Ihren Code, es ist wahrscheinlich ein Tippfehler.

Ich bin sicher, das wird Ihr Problem beheben. Wenn nicht, können Sie stattdessen pyodbc ausprobieren. Es funktioniert genauso gut.

import pyodbc 

server = 'tcp:myserver.database.windows.net' 
database = 'myDB' 
username = 'username' 
password = 'Secretpassword' 
connectObj = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) 

Prost!

+0

'pip install pyodbc' funktioniert auf Ubuntu vorausgesetzt, Sie haben diesen Befehl' sudo apt install unixodbc-dev' ausgeführt – mondieki

Verwandte Themen