Conexión Python Teradata
-
la base de datos
Teradata
en Python -
Use la biblioteca
PyODBC
para conectarse aTeradata
en Python -
Use
Teradata
SQL para conectarse aTeradata
en Python -
Utilice el módulo
Teradata
para conectarse aTeradata
en Python
Este artículo de Python mostrará cómo conectarse a Teradata
usando Python. Las opciones para conectarse a Teradata
y exportar tablas a Pandas son numerosas.
Este artículo discutirá algunas pautas adecuadas esenciales y verá cómo funciona el módulo Teradata
antes de discutir las formas de conexión.
la base de datos Teradata
en Python
Puede crear secuencias de comandos de interacciones potentes con la base de datos Teradata
utilizando Python con el módulo Teradata
.
La adopción de la filosofía udaSQL
ofrece un motor SQL orientado a DevOps en el que los desarrolladores pueden concentrarse en su lógica SQL en lugar de realizar configuraciones externas, agrupación de consultas y registro.
Podemos descargar el módulo Teradata
bajo licencia MIT. El siguiente paso es instalar y descargar el paquete desde PyPI
.
Debido a su naturaleza de código abierto, este módulo cuenta con el apoyo de la comunidad. Sin embargo, los clientes e ingenieros no reciben soporte para la interoperabilidad de este módulo con aplicaciones de terceros, como el controlador ODBC de Teradata
y sqlalchemy-Teradata
.
Use la biblioteca PyODBC
para conectarse a Teradata
en Python
El marco de datos de Pandas se puede crear con SQL y cargar en Teradata
con un marco de datos Teradata
.
- Un entorno con Pandas instalado en Python.
- Se conocen el nombre de host/dirección IP y el método de conexión de la base de datos
Teradata
. - Se debe instalar un controlador
ODBC
en la máquina que intenta conectar aTeradata
.
Alternativamente, puede comunicarse con el DBA de su empresa si no está seguro de los detalles de la base de datos de Teradata
. Sin el controlador Teradata
ODBC
, es posible que deba utilizar JDBC
y PySpark
.
En este tutorial, también discutiremos otros métodos.
Utilice la biblioteca PyODBC
Con PyODBC
, puede conectarse fácilmente a las bases de datos ODBC
utilizando Python. Además, esta biblioteca implementa la especificación DB API 2.0 con aún más características Pythonic.
En su entorno de Python, debe instalar la biblioteca PyODBC
. Luego, puede instalar la biblioteca con Conda
o Pip
.
pip install pyodbc
O
conda install pyodbc
Se utiliza un paquete de Python llamado pip
para instalar paquetes, bibliotecas y módulos. Por ejemplo, después de que pip
haya instalado el módulo PyODBC
y el controlador ODBC
de Teradata
, ejecute el siguiente código de Python para enumerar los controladores existentes.
Verifique que Teradata
aparece en esta lista prestando atención al nombre del controlador Teradata
.
pyodbc.drivers()
Extraiga datos de Teradata
en el marco de datos de Pandas
La siguiente valla de código muestra cómo extraer datos de SQL en marcos de datos de Pandas. Pero, primero, verifique el siguiente marco de datos de salida.
teradata_df.head()
df.head()
de Python siempre devuelve las primeras filas anteriores a 5
. Entonces aquí, mostrará las primeras cinco filas de la tabla predeterminada de Teradata
de 0-4
.
teradata_df.info()
Hay mucha información pertinente en la cadena de conexión, como el nombre de host
, controlador
, nombre de usuario
, contraseña
y protocolo de autenticación
.
Es posible que deba pasar parámetros opcionales según la configuración de Teradata
. Los parámetros que son compatibles con ODBC se pueden pasar a PyODBC
.
Subir marco de datos a Teradata
desde Pandas
El proceso de extracción de datos es simple, pero el proceso de carga de datos es más complicado.
- El marco de datos de Pandas debe transformarse en un esquema.
- Deberíamos dividir el marco de datos en partes. La base de datos
ODBC
tiene un máximo de1MB
por inserción, por lo que fallará si su marco de datos es grande. - Debemos insertar los registros secuencialmente.
Puede cargar el marco de datos siguiendo el código a continuación.
cnxn.commit()
print("Query complete. Running time is %s sec/s." % (round(end_time - start_time)))
El comando cnxn.commit()
confirmará los cambios y los hará permanentes.
Use Teradata
SQL para conectarse a Teradata
en Python
Para usar este paquete, no necesita instalar los controladores Teradata
(aparte de este).
import teradatasql
with teradatasql.connect(host="name", user="name", password="*****") as connect:
df = pd.read_sql(query, connect)
Una vez que se importe el terasql
, el Teradata
se conectará con los siguientes parámetros host
, username
y password
. Luego, después de una conexión exitosa, la consulta se leerá y ejecutará.
Otra forma es utilizar el módulo Giraffez
. Este módulo tiene muchas características útiles, como MLOAD
, FASTLOAD
, BULKEXPORT
, etc. Sin embargo, solo hay algunos requisitos para principiantes (por ejemplo, compilador C/C++, Teradata CLIv2
y TPT API encabezados/lib
archivos).
Tenga en cuenta que el administrador de contexto se ha actualizado para garantizar que las sesiones se cierren a partir del 13-07-2018
. DF
se puede utilizar para enviar datos a Teradata
.
Mediante el método rest
podemos eliminar el límite de 1MB
impuesto por odbc
y la dependencia del controlador odbc
. Deberíamos usar la dirección IP del host en lugar del argumento del controlador.
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
)
Para evitar el error de asignación de memoria HY001[ODBC Teradata Driver]
, divida sus datos en fragmentos de menos de 1MB
cuando utilice el controlador ODBC
Teradata
. Por ejemplo:
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
)
La siguiente es otra manera fácil de conectar Teradata
con Python.
Utilice el módulo Teradata
para conectarse a Teradata
en Python
Al ejecutar el siguiente comando si pip ya está instalado, puede instalar este módulo directamente:
pip install Teradata
Puede descargar el paquete en la siguiente URL si aún no lo tiene: https://pypi.org/pypi/teradata/.
Una vez que descargue el paquete teradata
, descomprímalo y luego use el símbolo del sistema para navegar al directorio que contiene setup.py, además ejecute el siguiente comando para instalar:
python setup.py install
Código de ejemplo:
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...")
Para conectarnos a Teradata
, debemos configurar estos parámetros: modo de transacción
es Teradata
; ODBC
es el método
de conexión (la otra opción es REST
), DSN
es td16vm
, configurado con los siguientes parámetros en el ordenador.
En el siguiente paso, deberá crear una máquina virtual para Teradata
. Este es el resultado de la ejecución del código de ejemplo anterior:
Como se discutió, existen varias formas de conectar Teradata
a Python. Con instrucciones paso a paso, aquí se han revelado todas las formas posibles de conectar el módulo Teradata
en Python.
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