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?
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.