使用 pyodbc 查询 Informix table 会产生 ODBC SQL type -103 is not yet supported 错误

Querying Informix table using pyodbc produces ODBC SQL type -103 is not yet supported error

我正在尝试使用 pyodbc 从 Informix 数据库查询 table,并使用以下代码将结果写入 CSV 文件:

import pyodbc
import pandas as pd

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

conn = pyodbc.connect(dsn=f'{dsn}', uid=f'{username}', pwd=f'{password}')
cursor = conn.cursor()

sql = "SELECT FIRST 5 * from bookingsd"

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

我也试过以下方法:

import pyodbc, csv
    
server = '***.***.***.***'
dsn= 'informixdb'
username = 'user'
password = 'user123'
csvFile = r"C:\temp\bookings.csv"
    
conn = pyodbc.connect(dsn=f'{dsn}', uid=f'{username}', pwd=f'{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)

两者都产生相同的错误:

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

pyodbc 游标对象(即行)似乎发生了错误。有谁知道这个错误指的是什么?

因为 Informix 数据类型 CLOB 和 BLOB 不是标准的 ODBC 类型,您可能需要告诉 ODBC 驱动程序自动处理这些类型。

您可以通过设置“SQL_INFX_ATTR_ODBC_TYPES_ONLY”ODBC 属性或向连接字符串添加“NeedODBCTypesOnly=1”来启用 ODBC 驱动程序中的“报告标准 ODBC 类型”功能。

https://www.ibm.com/docs/en/informix-servers/14.10?topic=types-report-standard-odbc