2016-07-20 6 views
2

Ich versuche, eine Verbindung zu einer SQL-Datenbank in Python herzustellen, aber ich habe Schwierigkeiten, Dokumentation/Beispiele für die Verbindung zu einer JDBC zu finden. Ich kann dies in MATLAB mit dem folgenden Code tun:Verbinden mit einer JDBC-Datenbank in Python im Vergleich zu MATLAB

`Name = 'ServerName'; 
Username = ''; 
Password = ''; 
Server = ['jdbc:sqlserver://ServerName:1433;'... 
    'database=DB;',... 
    'applicationIntent=ReadOnly;',... 
    'integratedSecurity=true;']; 
Connection = database('DB',Username , Password,... 
    'com.microsoft.sqlserver.jdbc.SQLServerDriver', Server);` 

Ich möchte dies in Python tun. Wegen der JDBC glaube ich nicht, dass ich pymssql oder pyodbc verwenden kann (ich habe es versucht). Ich habe versucht, und gescheitert, mit dem folgenden:

Jede Hilfe bei der Umsetzung in Python wäre toll, danke!

+0

Nur um zu verdeutlichen, JDBC ist eine API/Standard, keine Datenbank. Offenbar verbinden Sie sich mit einer MS SQL Server-Instanz. In diesem Fall sollten Sie pymssql oder einen geeigneten ODBC-Treiber über pyodbc verwenden können. Unabhängig davon würde es hilfreich sein, wenn Sie geklärt haben, welche Fehler oder Verhaltensweisen Sie beim Versuch von 'jaydebeapi.connect (...)' sehen. –

+0

Hmm, vielleicht verwendet MATLAB JDBC, weil es auf Java basiert? Wenn ich versuche, Pymssql zu verwenden, erhalte ich diese Fehlermeldung: Anmeldung fehlgeschlagen, DB-Lib-Fehlermeldung 20018, Schweregrad 14: \ nGeneral SQL Server-Fehler: Überprüfen Sie Nachrichten aus der SQL Server \ nDB-Lib-Fehlermeldung 20002, Schweregrad 9: \ nAdaptive Serververbindung fehlgeschlagen (DB: 1433) \ n ") – Hobbes

+0

@Jerod, danke, dass du mich in die richtige Richtung gelenkt hast. Ich habe meine Lösung gepostet. – Hobbes

Antwort

1

Ich denke, dass MATLAB den jdbc-Treiber wegen Java benötigt, aber in Python ist es unnötig. Meine Lösung wird mit Pyodbc:

conn = pyodbc.connect(driver='{SQL Server}', host=Server,  database=DB, 
        trusted_connection='yes', Username ='', Password='', readonly = True) 

Es sieht nicht so aus pymssql einem nur lesbaren Argument übergeben kann, weshalb ich Pyodbc verwenden.