Ich habe ein Problem beim Auswählen von Daten aus Informix-Datenbanktabellen mit python3.5 und pyodbc/unixODBC.So verbinden Sie ausgewählte Daten aus der Informix-Datenbank in python3 mit pyodbc/unixODBC
Ich habe eine kleine py-Datei (ifx.py), deren Inhalt sind:
import pyodbc
db=pyodbc.connect('DSN=Test1')
db.execute("SELECT * FROM customer ")
und ich erhalte eine Fehlermeldung:
pyodbc.Error: ('HY000', '[HY000] [Informix][Informix ODBC Driver]Invalid byte in codeset conversion input. (21000) (SQLExecDirectW)')
Alle Such ich etwas bedeuten getan habe um mit Locale-Einstellungen zu tun, aber ich überprüfen und sie setzen alle gleich:
CLIENT_LOCALE=en_US.819
DB_LOCALE=en_US.819
dbs_collate=en_US.819
Wenn ich die unixODBC ‚isql‘ Dienstprogramm ich ca n Verbindung zu und Abfrage der Daten glücklich.
Versionsinformation.
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
Umgebungsvariable ODBCINI verweist auf /etc/odbc.ini. Inhalte sind:
[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 Inhalt:
[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
und odbcinst -J Ausgang ist
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
Vielen Dank im Voraus für jede Hilfe oder Anregungen.
Danke für die Rückmeldung, aber ich vermute, es ist nicht in meiner Tabelle Daten. Ich habe eine kleine Tabelle mit 3 Spalten erstellt. Über unixODBC isql kann ich die Daten auswählen: 'SQL> select * von jeff; + ----------- + --------- + ------------ + | _name | _code | _int | + ----------- + --------- + ------------ + | ABCDEFGHIJ | 12345678 | 123456789 | + ----------- + --------- + ------------ + ' Durch Python bekomme ich den gleichen Fehler – JeffP
@JeffP Do Sie erhalten diese Art von Fehler, wenn Sie eine kleine Tabelle in SQLite erstellen? Mit anderen Worten: Können wir feststellen, ob dies ein Problem bei der Verbindung mit dieser Datenbank oder einer Datenbank ist? – gregory