Python-Teradata-Verbindung
-
die Datenbank
Teradata
in Python -
Verwenden Sie die Bibliothek
PyODBC
, um sich mitTeradata
in Python zu verbinden -
Verwenden Sie
Teradata
SQL, um sich mitTeradata
in Python zu verbinden -
Verwenden Sie das
Teradata
-Modul, um sich mitTeradata
in Python zu verbinden
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.
- Eine Umgebung mit in Python installierten Pandas.
- Hostname/IP-Adresse und Verbindungsmethode der Datenbank
Teradata
sind bekannt. - Auf der Maschine, die Sie mit
Teradata
verbinden möchten, muss einODBC
-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()
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.
teradata_df.info()
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.
- Der Pandas-Datenrahmen muss in ein Schema umgewandelt werden.
- Wir sollten den Datenrahmen in Blöcke aufteilen. Die
ODBC
-Datenbank hat maximal1MB
pro Einfügung, daher schlägt sie fehl, wenn Ihr Datenrahmen groß ist. - 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:
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.
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