Python-Teradata-Verbindung

Abid Ullah 16 Februar 2024
  1. die Datenbank Teradata in Python
  2. Verwenden Sie die Bibliothek PyODBC, um sich mit Teradata in Python zu verbinden
  3. Verwenden Sie Teradata SQL, um sich mit Teradata in Python zu verbinden
  4. Verwenden Sie das Teradata-Modul, um sich mit Teradata in Python zu verbinden
Python-Teradata-Verbindung

Dieser Python-Artikel zeigt, wie man sich mit Python mit Teradata verbindet. Die Möglichkeiten, sich mit Teradata zu verbinden und Tabellen nach Pandas zu exportieren, sind zahlreich.

In diesem Artikel werden einige wesentliche richtige Richtlinien erörtert und die Funktionsweise des Teradata-Moduls betrachtet, bevor wir die Möglichkeiten der Verbindung besprechen.

die Datenbank Teradata in Python

Sie können leistungsstarke Interaktionen mit der Teradata-Datenbank mit Python mit dem Teradata-Modul skripten.

Die Übernahme der udaSQL-Philosophie bietet eine DevOps-orientierte SQL-Engine, in der sich Entwickler auf ihre SQL-Logik konzentrieren können, anstatt externe Konfigurationen, Query-Banding und Protokollierung durchzuführen.

Wir können das Modul Teradata unter der MIT-Lizenz herunterladen. Der nächste Schritt besteht darin, das Paket von PyPI zu installieren und herunterzuladen.

Aufgrund seiner Open-Source-Natur wird dieses Modul von der Community unterstützt. Kunden und Ingenieure erhalten jedoch keinen Support für die Interoperabilität dieses Moduls mit Anwendungen von Drittanbietern, wie z. B. dem ODBC-Treiber von Teradata und sqlalchemy-Teradata.

Verwenden Sie die Bibliothek PyODBC, um sich mit Teradata in Python zu verbinden

Der Pandas-Datenrahmen kann mit SQL erstellt und mit einem Teradata-Datenrahmen auf Teradata hochgeladen werden.

  1. Eine Umgebung mit in Python installierten Pandas.
  2. Hostname/IP-Adresse und Verbindungsmethode der Datenbank Teradata sind bekannt.
  3. Auf der Maschine, die Sie mit Teradata verbinden möchten, muss ein ODBC-Treiber installiert sein.

Alternativ können Sie sich an den DBA Ihres Unternehmens wenden, wenn Sie sich bezüglich der Datenbankdetails von Teradata nicht sicher sind. Ohne den Teradata ODBC-Treiber müssen Sie möglicherweise JDBC und PySpark verwenden.

In diesem Tutorial werden wir auch andere Methoden besprechen.

Verwenden Sie die Bibliothek PyODBC

Mit PyODBC können Sie ganz einfach mit Python eine Verbindung zu ODBC-Datenbanken herstellen. Darüber hinaus implementiert diese Bibliothek die DB API 2.0-Spezifikation mit noch mehr Pythonic-Funktionen.

In Ihrer Python-Umgebung sollten Sie die Bibliothek PyODBC installieren. Anschließend können Sie die Bibliothek entweder mit Conda oder Pip installieren.

pip install pyodbc

ODER

conda install pyodbc

Ein Python-Paket namens pip wird verwendet, um Pakete, Bibliotheken und Module zu installieren. Nachdem beispielsweise pip das PyODBC-Modul und den ODBC-Treiber von Teradata installiert hat, führen Sie den folgenden Python-Code aus, um die vorhandenen Treiber aufzulisten.

Vergewissern Sie sich, dass Teradata in dieser Liste erscheint, indem Sie auf den Namen des Teradata-Treibers achten.

pyodbc.drivers()

Python-Teradata-Verbindung - pyodbc

Extrahieren Sie Daten aus Teradata in Pandas Data Frame

Der folgende Code Fence zeigt, wie Daten aus SQL in Pandas-Datenrahmen extrahiert werden. Aber prüfen Sie zuerst den nächsten Ausgangsdatenrahmen.

teradata_df.head()

Pythons df.head() gibt immer die ersten über 5 Zeilen zurück. Hier werden also die ersten fünf Zeilen aus der Standardtabelle von Teradata von 0-4 angezeigt.

Python-Teradata-Verbindung - df_head

teradata_df.info()

Python-Teradata-Verbindung - teradataInfo

Die Verbindungszeichenfolge enthält viele relevante Informationen, wie z. B. hostname, Treiber, Benutzername, Passwort und Authentifizierungsprotokoll.

Abhängig von Ihren Teradata-Einstellungen müssen Sie möglicherweise optionale Parameter übergeben. Parameter, die ODBC-kompatibel sind, können an PyODBC übergeben werden.

Laden Sie den Datenrahmen von Pandas zu Teradata hoch

Das Abrufen von Daten ist einfach, aber das Hochladen von Daten ist komplizierter.

  1. Der Pandas-Datenrahmen muss in ein Schema umgewandelt werden.
  2. Wir sollten den Datenrahmen in Blöcke aufteilen. Die ODBC-Datenbank hat maximal 1MB pro Einfügung, daher schlägt sie fehl, wenn Ihr Datenrahmen groß ist.
  3. Wir sollten die Datensätze nacheinander einfügen.

Sie können den Datenrahmen hochladen, indem Sie dem folgenden Code folgen.

cnxn.commit()
print("Query complete. Running time is %s sec/s." % (round(end_time - start_time)))

Der Befehl cnxn.commit() übernimmt die Änderungen und macht sie dauerhaft.

Verwenden Sie Teradata SQL, um sich mit Teradata in Python zu verbinden

Um dieses Paket zu verwenden, müssen Sie keine Teradata-Treiber installieren (außer diesem).

import teradatasql

with teradatasql.connect(host="name", user="name", password="*****") as connect:
    df = pd.read_sql(query, connect)

Nach dem Import von terasql verbindet sich Teradata mit den folgenden Parametern host, username & password. Dann wird nach einer erfolgreichen Verbindung die Abfrage gelesen und ausgeführt.

Eine andere Möglichkeit ist die Verwendung des Giraffez-Moduls. Dieses Modul hat viele nützliche Features wie MLOAD, FASTLOAD, BULKEXPORT usw. Es gibt jedoch nur wenige Voraussetzungen für Anfänger (z. B. C/C++-Compiler, Teradata CLIv2 und TPT API headers/lib-Dateien).

Bitte beachten Sie, dass der Kontextmanager aktualisiert wurde, um sicherzustellen, dass die Sitzungen ab dem 13-07-2018 geschlossen sind. Mit DF können Daten an Teradata gesendet werden.

Mit der rest-Methode können wir die durch odbc auferlegte 1MB-Grenze und die Abhängigkeit vom odbc-Treiber eliminieren. Wir sollten die Host-IP-Adresse anstelle des Treiberarguments verwenden.

import teradata
import pandas as pd

udaExec = teradata.UdaExec(appName="webApp", version="1.0", logConsole=False)
with udaExec.connect(
    method="rest_one",
    system="DB_Name",
    username="user_name",
    password="*******",
    host="HOST_IP_ADDRESS",
) as connect:

    data = [tuple(x) for x in df.to_records(index=False)]

    connect.executemany(
        "INSERT INTO DATABASE.TABLEWITH5COL values(?,?,?,?,?)", data, batch=True
    )

Um den HY001[ODBC Teradata Driver] Memory allocation error zu vermeiden, teilen Sie Ihre Daten in weniger als 1MB-Blöcke auf, wenn Sie den ODBC Teradata-Treiber verwenden. Zum Beispiel:

import teradata
import pandas as pd
import numpy as np

udaExec = teradata.UdaExec(appName="test", version="1.0", logConsole=False)
with udaExec.connect(
    method="odbc",
    system="DBName",
    username="User_Name",
    password="*******",
    driver="Driver_Name",
) as connect:
    chunks_df = np.array_split(huge_df, 100)
    for i, _ in enumerate(chunks_df):
        data = [tuple(x) for x in chuncks_df[i].to_records(index=False)]
        connect.executemany(
            "INSERT INTO DATABASE.TABLEWITH5COL values(?,?,?,?,?)", data, batch=True
        )

Nachfolgend finden Sie eine weitere einfache Möglichkeit, Teradata mit Python zu verbinden.

Verwenden Sie das Teradata-Modul, um sich mit Teradata in Python zu verbinden

Wenn Pip bereits installiert ist, können Sie dieses Modul direkt installieren, indem Sie den folgenden Befehl ausführen:

pip install Teradata

Sie können das Paket unter der folgenden URL herunterladen, falls Sie es noch nicht haben: https://pypi.org/pypi/teradata.

Nachdem Sie das Paket teradata heruntergeladen haben, entpacken Sie es und verwenden Sie dann die Eingabeaufforderung, um zu dem Verzeichnis zu navigieren, das setup.py enthält, und führen Sie den folgenden Befehl zur Installation aus:

python setup.py install

Beispielcode:

import teradata
import sys

udaExec = teradata.UdaExec(appName="HelloPeople", version="1.0", logConsole=False)
session = udaExec.connect(
    method="odbc",
    dsn="td16vm",
    username="",
    password="",
    autocommit=True,
    transactionMode="Teradata",
)

for row in session.execute("select getqueryband();"):
    print(row)
for row in session.execute("select top 20 tablename, tablekind from dbc.tables;"):
    print(row)

session.close()
input("Type <Enter> to exit...")

Um eine Verbindung zu Teradata herzustellen, müssen wir diese Parameter konfigurieren: Transaktionsmodus ist Teradata; ODBC ist die verbindende Methode (die andere Option ist REST), DSN ist td16vm, konfiguriert mit den folgenden Parametern im Computer.

Im nächsten Schritt müssen Sie eine virtuelle Maschine für Teradata erstellen. Hier ist das laufende Ergebnis für den obigen Beispielcode:

Python-Teradata-Verbindung - Teradata verbinden

Wie bereits erwähnt, gibt es mehrere Möglichkeiten, Teradata mit Python zu verbinden. Mit Schritt-für-Schritt-Anleitungen wurden hier alle Möglichkeiten zur Anbindung des Teradata-Moduls in Python aufgezeigt.

Autor: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn