Sto provando a connettermi a SQL tramite python per eseguire alcune query su alcuni database SQL su server Microsoft SQL. Dalla mia ricerca online e su questo forum la libreria più promettente sembra essere pyodbc. Così ho fatto il seguente codiceConnessione al server Microsoft SQL tramite Python
import pyodbc
conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+;
database=+MSQLDatabase+; trusted_connection=true")
cursor = conn.cursor()
e ottenere il seguente errore
Traceback (most recent call last):
File "C:\Users...\scrap.py", line 3, in <module>
conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true")
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
Ho guardato i posti folowing e provato a cambiare il mio autista a {sql server} e sono collegati mediante link ODBC prima in SAS, che è parzialmente ciò su cui è basato il mio codice precedente, quindi non credo di aver bisogno di installare altro.
Pyodbc - "Data source name not found, and no default driver specified"
Grazie
Grazie per la spiegazione e il codice ho ottenuto il conducente uno a lavorare. Anche se ho dovuto sbarazzarsi di .format (...) e inserire le variabili nei luoghi appropriati. Che cosa doveva fare il formato? –
È necessario installare 'adodbapi' per utilizzare la connessione OLEDB. E il formato stringa è il metodo consigliato per passare variabili in una stringa piuttosto che usare l'operatore '+'. Le parentesi graffe con i numeri sono segnaposto che 'format()' si riempie di conseguenza. Puoi persino passare in liste e tuple usando 'format()'. Il tuo codice originale non ha infranto la stringa e le variabili tra virgolette, quindi '+' è stato considerato parte della stringa. – Parfait
Mentre questa risposta è ottima e mi ha aiutato a risolvere il problema. chiunque stia tentando di farlo ricorda che potresti ottenere un'eccezione se imposti la connessione trusted = yes e inserisci l'UID/pwd nella stessa stringa di connessione. Questa è una combinazione o una combinazione e quando si utilizza una connessione trusted, le credenziali NT/sistema vengono utilizzate per l'autenticazione anche se si menziona esplicitamente UID/PWD. – S4nd33p