Verbindung zu einem Microsoft SQL Server mit Python und Pyodbc

Vaibhav Vaibhav 4 Dezember 2021
Verbindung zu einem Microsoft SQL Server mit Python und Pyodbc

Microsoft SQL Server ist ein relationales Datenbankmanagementsystem oder kurz RDBMS. Wie der Name schon sagt, wurde es von Microsoft entwickelt und ist in C/C++ geschrieben. Es ist ein Werkzeug, das seinen Benutzern die Interaktion mit relationalen Datenbanken unter Verwendung von SQL oder der Structured Query Language ermöglicht.

Bei der Arbeit mit realen Anwendungen müssen wir mit vielen Daten umgehen. Die Daten müssen jede Sekunde aktualisiert, erstellt und gelöscht werden, und diese RDBMS sind intelligent und robust genug, um solche Vorgänge schnell und sicher abzuwickeln.

Heute werden Anwendungen mit verschiedenen Programmiersprachen entwickelt. Das bedeutet, dass jede Programmiersprache eine Möglichkeit haben sollte, sich mit diesen RDBMS zu verbinden und auf die in den Datenbanken gespeicherten Daten zuzugreifen. Zu diesen Möglichkeiten gehören ORMs oder Object Relational Mapping-Bibliotheken und Open Database Connectivity- oder ODBC-Pakete. Dies sind zwei sehr unterschiedliche Dinge, und beide können verwendet werden, um eine Verbindung zu Datenbanken herzustellen.

Ein einfacher Unterschied zwischen den beiden besteht darin, dass ORM Entwicklern ermöglicht, mit Datenbanken zu interagieren, indem sie Python-Klassen oder Modelle verwenden, die Datenbanktabellen und -manager darstellen, eine weitere Python-Klasse), um Abfragen über die Modelle durchzuführen. Auf der anderen Seite ermöglicht ODBC Entwicklern, rohe oder native SQL-Abfragen zu schreiben, um direkt mit der Datenbank zu interagieren.

Da Python eine bekannte und weit verbreitete Programmiersprache ist, bietet es auch eine gute Unterstützung für ORMs und ODBCs. Und da wir über die Verbindung zu Microsoft SQL Server mit Python und pyodbc sprechen, werden wir hauptsächlich über ODBCs lernen, denn pyodbc ist ein ODBC.

Verbindung zu einem Microsoft SQL Server mit pyodbc

Um eine Verbindung zu einem Microsoft SQL Server herzustellen, benötigen wir zunächst einige Angaben zum Server: den Treibernamen, den Servernamen und den Datenbanknamen. Mit den obigen Informationen muss ein spezieller String erstellt werden, der an die Funktion connect() der Bibliothek pyodbc übergeben wird.

Das Format der Zeichenkette ist wie folgt.

Driver = { < driver_name > }
Server = <server_name >
Database = <database_name >
Trusted_Connection = yes

Mit der Methode connect() wird eine Verbindung zwischen dem Programm und dem Server aufgebaut, über die dann SQL-Abfragen direkt über die Datenbank ausgeführt werden können.

Siehe den folgenden Code für dasselbe.

import pyodbc

connection = pyodbc.connect(
    "Driver={<driver_name>};Server=<server_name>;Database=<database_name>;Trusted_Connection=yes;"
)  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

Man kann sich auch mit dem DSN oder Data Source Name, einer Benutzer-ID und einem Passwort mit einem Server verbinden. Und die Zeichenkette dafür ist wie folgt.

DSN = <dsn >
UID = <user >
PWD = <password >

Beziehen Sie sich in einem solchen Fall auf den folgenden Code.

import pyodbc

connection = pyodbc.connect("DSN=<dsn>;UID=<user>;PWD=<password>")  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

Weitere Informationen zu Treibern von Microsoft SQL Server, Verbindungen und Informationen, die für die Verbindung mit der Bibliothek erforderlich sind, finden Sie hier. Weitere Informationen über die Bibliothek selbst finden Sie in der offiziellen Dokumentation hier.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.