odbc - 使用 pyodbc 查询 Informix 表会产生 ODBC SQL 类型 -103 尚未支持错误

标签 odbc pyodbc informix

我正在尝试使用 pyodbc 从 Informix 数据库查询表,并使用以下代码将结果写入 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

关于odbc - 使用 pyodbc 查询 Informix 表会产生 ODBC SQL 类型 -103 尚未支持错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70247964/

相关文章:

python - pyodbc (4.0.23) 从 Python3 连接到 MySQL 时出错

python - 如何在 try-except 语句中正确处理 pyodbc 错误

.net - 使用 .NET Provider 连接 Informix 数据库

c# - SQL + Informix : How do I add a blob when doing an insert?(使用 .NET (C#) SDK)

c++ - ODBC、SQL_SUCCESS_WITH_INFO、游标类型已更改 - 发生在具有单个 SELECT 的存储过程上

mysql - 通过 SSIS,无法使用连接成功且位于 ODBC.INI 注册表中的用户 DSN 连接到 mysql DB

C# Datetime 到 ODBC Datetime 转换错误

java - 如何增加 ODBC 中的字符限制

python - 使用Python执行动态SQL但收到异常

sql - 有没有直接的方法将 Informix 上的 Unix 时间转换为 YYYY-MM-DD HH :MM:SS?