Wie kann ich mit Python unter Linux eine Verbindung zu HFSQL C/S herstellen?Linux

Linux verstehen
Anonymous
 Wie kann ich mit Python unter Linux eine Verbindung zu HFSQL C/S herstellen?

Post by Anonymous »

Ich versuche, mit Python (pyodbc) auf einem Linux-Ubuntu-Computer eine Verbindung zu einer älteren HFSQL-Client/Server-Datenbank (HyperFileSQL) herzustellen.
Ich habe die offizielle Dokumentation befolgt, um den spezifischen ODBC-Treiber für Linux zu installieren, erhalte jedoch weiterhin einen IM002-Fehler, der auf eine Verbindung zwischen dem Treiber-Manager und den Konfigurationsdateien hinweist.
System-Setup:
  • Betriebssystem: Ubuntu 20.04 (ungefähr)
  • Treiber: HFSQL ODBC Linux 64-bit (über install.sh)
  • ODBC-Manager: libiodbc2 libiodbc2-dev
  • Python-Paket: pyodbc
Durchgeführte Konfigurationsschritte:
  • Ich habe die für WinDev erforderlichen Abhängigkeiten installiert:

Code: Select all

sudo apt-get install libiodbc2 libiodbc2-dev
  • Ich habe den Treiber erfolgreich installiert. Ich habe den Eintrag in /etc/odbcinst.ini überprüft:

Code: Select all

[ODBC Drivers]
HFSQL = Installed

[HFSQL]
Description = HFSQL ODBC Driver
Driver = /home/datpandx/hfsql/wd250hfo64.so
  • Ich habe einen Benutzer-DSN in ~/.odbc.ini konfiguriert:

Code: Select all

[ODBC Data Sources]
HFSQL_FRUTAL = HFSQL

[HFSQL_FRUTAL]
Driver = HFSQL
Server Name = 26.***
Server Port = 4900
Database = ***
UID = ***
PWD = ***
Diagnose: Beim Ausführen von pyodbc.drivers() wird „HFSQL“ korrekt aufgeführt, was darauf hindeutet, dass Python die Datei odbcinst.ini lesen kann. Wenn ich jedoch die Binärabhängigkeiten des Treibers mit ldd überprüfe, sehe ich, dass er auf libiodbc verweist, während pyodbc normalerweise auf unixODBC basiert.
Das Problem: Wenn ich versuche, eine Verbindung über eine DSN-lose Verbindungszeichenfolge herzustellen (um Probleme mit dem .ini-Dateipfad auszuschließen), schlägt dies sofort fehl.
Code:

Code: Select all

import pyodbc

print(f"Available Drivers: {pyodbc.drivers()}")
# Output: ['ODBC Drivers', 'HFSQL']

dsn='HFSQL_FRUTAL'
user = '***'
password = '***'

try:
conn_str = (
f"DSN={dsn};"
f"UID={user};"
f"PWD={password};"
)

print(f"Trying to connect to: {driver_name} ...")
conn = pyodbc.connect(conn_str)
print("¡CONNECTED!")
conn.close()

except Exception as e:
print("Fail")
print(e)
Der Fehler:

Code: Select all

(hfsql) datpandx@panda:~/hfsql$ python3 hfsql.py
Available Drivers: ['ODBC Drivers', 'HFSQL']
Trying to connect to: HFSQL_FRUTAL ...
Fail
('0000', '[0000] U (0) (SQLDriverConnect)')

(hfsql) datpandx@panda:~/hfsql$ odbcinst -q -s
[HFSQL_FRUTAL]
Was ich versucht habe:
  • Überprüfte Dateipfade in /etc/odbcinst.ini sind absolut und korrekt.
  • Ich habe versucht, Umgebungsvariablen explizit festzulegen, bevor ich das Skript ausgeführt habe: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/datpandx/hfsql
  • Versucht mit dem DSN-Ansatz (DSN=HFSQL_FRUTAL) mit dem gleichen Fehler

    Ergebnis.
Gibt es eine bekannte Lösung zwischen pyodbc und dem HFSQL-Treiber (der anscheinend von iODBC abhängt)? Wie kann ich diese Lücke unter Linux schließen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post