es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consultar una tabla de Informix utilizando pyodbc produce un error que indica que el tipo de SQL ODBC -103 aún no está admitido.

Estoy tratando de consultar una tabla de una base de datos Informix usando pyodbc y escribir los resultados en un archivo CSV con el siguiente código:

import pyodbc
import pandas as pd

server = '***.***.***.***'
dsn = 'informixdb'
username = 'user'
password = 'user123'
csvFile = r"C:\temp\bookings.csv"

conn = pyodbc.connect(dsn=dsn, uid=username, pwd=password)
cursor = conn.cursor()

sql = "SELECT FIRST 5 * from bookingsd"

df = pd.read_sql_query(sql, conn)
df.to_csv(csvFile, index=False)

También he intentado lo siguiente:

import pyodbc, csv

server = '***.***.***.***'
dsn = 'informixdb'
username = 'user'
password = 'user123'
csvFile = r"C:\temp\bookings.csv"

conn = pyodbc.connect(dsn=dsn, uid=username, pwd=password)
cursor = conn.cursor()

sql = "SELECT FIRST 5 * from bookingsd"

rows = cursor.execute(sql)
with open(csvFile, 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([x[0] for x in cursor.description])  # column headers
        for row in rows:
           writer.writerow(row)

Ambos producen el mismo error:

ODBC SQL type -103 is not yet supported.  column-index=136 
type=-103', 'HY106'

Parece que el error está ocurriendo para el objeto “rows” de pyodbc cursor. ¿Alguien sabe a qué se refiere este error?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que una de las columnas en la tabla tiene un tipo de dato no compatible (-103), lo cual está causando el error cuando pyodbc intenta obtener los resultados.

    Para resolver este problema, puedes intentar identificar la columna problemática y manejarla manualmente (por ejemplo, convirtiendo el tipo de dato antes de obtener los resultados), o puedes actualizar el esquema de la base de datos Informix para utilizar un tipo de dato compatible para esa columna.

    Alternativamente, puedes intentar utilizar otra biblioteca o controlador que pueda tener un mejor soporte para el tipo de dato específico que está causando el problema.

Comments are closed.