Conexión Python Teradata

Abid Ullah 16 febrero 2024
  1. la base de datos Teradata en Python
  2. Use la biblioteca PyODBC para conectarse a Teradata en Python
  3. Use Teradata SQL para conectarse a Teradata en Python
  4. Utilice el módulo Teradata para conectarse a Teradata en Python
Conexión Python Teradata

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.

  1. Un entorno con Pandas instalado en Python.
  2. Se conocen el nombre de host/dirección IP y el método de conexión de la base de datos Teradata.
  3. Se debe instalar un controlador ODBC en la máquina que intenta conectar a Teradata.

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()

conexión teradata python - pyodbc

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.

conexión teradata python - df_head

teradata_df.info()

conexión teradata python - teradataInfo

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.

  1. El marco de datos de Pandas debe transformarse en un esquema.
  2. Deberíamos dividir el marco de datos en partes. La base de datos ODBC tiene un máximo de 1MB por inserción, por lo que fallará si su marco de datos es grande.
  3. 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:

conexión teradata python - conectar teradata

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.

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