python连接服务器informix_linux-如何使用pyodbc / unixODBC从python3中的Informix数据库连接选择数据...

我在使用python3.5和pyodbc / unixODBC从Informix数据库表中选择数据时遇到问题.

我有一个小的py文件(ifx.py),其内容是:

import pyodbc

db=pyodbc.connect('DSN=Test1')

db.execute("SELECT * FROM customer ")

我得到一个错误:

pyodbc.Error: ('HY000', '[HY000] [Informix][Informix ODBC Driver]Invalid byte in codeset conversion input. (21000) (SQLExecDirectW)')

我完成的所有搜索都暗示与LOCALE设置有关,但是我检查了一下,并将它们设置为相同:

CLIENT_LOCALE=en_US.819

DB_LOCALE=en_US.819

dbs_collate=en_US.819

如果我使用unixODBC’isql’实用程序,则可以连接并愉快地查询数据.

版本信息.

unixODBC.x86_64 0:2.2.14-14.el6

pyodbc.version => '4.0.6'

Linux => Red Hat Enterprise Linux Server release 6.8

python3.5 => Python 3.5.3

Database => IBM Informix Dynamic Server Version 12.10.FC6X5

ClientSDK => IBM Informix CSDK Version 4.10, IBM Informix-ESQL Version 4.10.FC6

环境变量ODBCINI指向/etc/odbc.ini.内容是:

[ODBC Data Sources]

Test1=IBM INFORMIX ODBC DRIVER

;

; Define ODBC Database Driver's Below - Driver Configuration Section

;

[Test1]

Driver=/opt/informix/lib/cli/iclis09b.so

Description=IBM INFORMIX ODBC DRIVER

Database=eunice

LogonID=

pwd=

Servername=indika_test

Port=9916

CursorBehavior=0

CLIENT_LOCALE=en_US.819

DB_LOCALE=en_US.819

TRANSLATIONDLL=/opt/informix/lib/esql/igo4a304.so

/etc/odbcinst.ini内容:

[ODBC Drivers]

IBM INFORMIX ODBC DRIVER=Installed

[IBM INFORMIX ODBC DRIVER]

Driver=/opt/informix/lib/cli/iclit09b.so

Setup=/opt/informix/lib/cli/iclit09b.so

APILevel=1

ConnectFunctions=YYY

DriverODBCVer=03.51

FileUsage=0

SQLLevel=1

smProcessPerConnect=Y

并且odbcinst -j输出是

unixODBC 2.2.14

DRIVERS............: /etc/odbcinst.ini

SYSTEM DATA SOURCES: /etc/odbc.ini

FILE DATA SOURCES..: /etc/ODBCDataSources

USER DATA SOURCES..: /etc/odbc.ini

SQLULEN Size.......: 8

SQLLEN Size........: 8

SQLSETPOSIROW Size.: 8

在此先感谢您的帮助或建议.

解决方法:

这可能是由于客户表中的多字节字符,无法将其从UTF8转换为拉丁文1,即ISO 8859-1.即使在CLIENT_LOCALE和DB_LOCALE上设置了相同的代码,ODBC客户端也会从UTF-8到8859进行内部转换.如果有任何2字节字符(超出扩展ASCII 255的字符),它们将不会转换为Latin-1客户.我将查看客户表中的数据并找出有问题的数据.

标签:informix,python-3-x,unixodbc,linux,pyodbc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值