IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HyperFileSQL Discussion :

Connection serveur hfsql depuis python


Sujet :

HyperFileSQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Connection serveur hfsql depuis python
    Bonjour,

    J'essaie sans succès de me connecter à une base hfsql depuis un script python.


    J'arrive à me connecter via la commande iodbctest et à exécuter des requêtes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    www-data@96fccb3356f0:/var/www/app# iodbctest "DSN=XXXXXXXX;PWD=XXXXXXXX"
    iODBC Demonstration program
    This program shows an interactive SQL processor
    Driver Manager: 03.52.0812.0326
    Driver: 28.00.36102 (wd280hfo64.so)
     
    SQL>
    En revanche lorsque je test depuis pyodbc j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    www-data@96fccb3356f0:/var/www/app$ python test_pyodbc.py 
    Traceback (most recent call last):
      File "/var/www/app/test_pyodbc.py", line 18, in <module>
        db = pyodbc.connect(cs)
             ^^^^^^^^^^^^^^^^^^
    pyodbc.Error: ('HY000', 'The driver did not supply an error!')
    mon fichier odbcinst.ini ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cat /etc/odbcinst.ini
    [ODBC Drivers]
    HFSQL = Installed
     
    [HFSQL]
    Description = HFSQL ODBC Driver
    Driver = /opt/hfsql_odbc_driver/wd280hfo64.so
    et lorsque je list les drivers pyodbc en python il semble bien accéder à HFSQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for driver in pyodbc.drivers():
        print(driver)
     
    ODBC Drivers
    HFSQL
    Une idée de ce qui pourrais coincer ?

    Merci,

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 391
    Points : 9 567
    Points
    9 567
    Par défaut
    Bonjour,

    la seule idée que j'ai, c'est de tester avec un driver odbc en 32 bits.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Malheureusement je n'ai pas l'impression qu'il existe de driver 32 bits pour la version 28
    https://pcsoft.fr/st/telec/modules-c...8/wx28_95g.htm

    J'ai essayé avec pypyodbc, mais j'ai une autre erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    root@34e3187d211f:/var/www/app# python test_pypyodbcFork.py 
    Traceback (most recent call last):
      File "/var/www/app/test_pypyodbcFork.py", line 22, in <module>
        db = pypyodbcFork.connect(cs)
             ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/var/www/app/pypyodbcFork.py", line 2494, in __init__
        self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly)
      File "/var/www/app/pypyodbcFork.py", line 2547, in connect
        check_success(self, ret)
      File "/var/www/app/pypyodbcFork.py", line 1027, in check_success
        ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)
      File "/var/www/app/pypyodbcFork.py", line 989, in ctrl_err
        print(err_list[0][1])
              ~~~~~~~~^^^
    IndexError: list index out of range
    Si je met un chemin vers un driver fake, je vois qu'il utilise unixODBC et pas iODBC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    root@34e3187d211f:/var/www/app# python test_pypyodbcFork.py 
    Traceback (most recent call last):
      File "/var/www/app/test_pypyodbcFork.py", line 22, in <module>
        db = pypyodbcFork.connect(cs)
             ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/var/www/app/pypyodbcFork.py", line 2489, in __init__
        self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly)
      File "/var/www/app/pypyodbcFork.py", line 2542, in connect
        check_success(self, ret)
      File "/var/www/app/pypyodbcFork.py", line 1022, in check_success
        ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)
      File "/var/www/app/pypyodbcFork.py", line 996, in ctrl_err
        raise OperationalError(state,err_text)
    pypyodbcFork.OperationalError: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/opt/hfsql_odbc_driver/wd280hfo64_fake.so' : file not found")

    J'ai essayé de remplacer la lib odbc chargée par la lib iodbc avec pypyodbc
    https://github.com/pypyodbc/pypyodbc...pyodbc.py#L427

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ODBC_API = ctypes.cdll.LoadLibrary('libodbc.so')
    root@34e3187d211f:/var/www/app# ls -l /usr/lib/x86_64-linux-gnu/libodbc.so
    lrwxrwxrwx 1 root root 38 Apr 5 18:28 /usr/lib/x86_64-linux-gnu/libodbc.so -> /usr/lib/x86_64-linux-gnu/libodbc.so.2

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ODBC_API = ctypes.cdll.LoadLibrary('libiodbc.so')
    ls -l /usr/lib/x86_64-linux-gnu/libiodbc.so
    lrwxrwxrwx 1 root root 18 Dec 25 2022 /usr/lib/x86_64-linux-gnu/libiodbc.so -> libiodbc.so.2.1.20


    Mais ça casse, même avec un fake driver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Traceback (most recent call last):
      File "/var/www/app/test_pypyodbcFork.py", line 22, in <module>
        db = pypyodbcFork.connect(cs)
             ^^^^^^^^^^^^^^^^^^^^^^^^
      File "/var/www/app/pypyodbcFork.py", line 2494, in __init__
        self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly)
      File "/var/www/app/pypyodbcFork.py", line 2547, in connect
        check_success(self, ret)
      File "/var/www/app/pypyodbcFork.py", line 1027, in check_success
        ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)
      File "/var/www/app/pypyodbcFork.py", line 1017, in ctrl_err
        raise ProgrammingError('', 'SQL_ERROR')
    pypyodbcFork.ProgrammingError: ('', 'SQL_ERROR')
    :/

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 145
    Points : 9 607
    Points
    9 607
    Par défaut
    Windev a une nouvelle version tous les ans, mais HFSQL n'évolue pas forcément au même rythme. Donc tu peux chercher dans des versions précédentes de Windev.
    Sinon, as tu vu cette page d'aide ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bon j'ai tenté les drivers 32 bits, mais ça ne donne rien.

    A priori le HFSQL cible est en version 28
    Nom : Capture d'écran 2024-04-08 111937.png
Affichages : 369
Taille : 28,4 Ko

    J'ai bien suivi la page d'aide https://doc.pcsoft.fr/fr-FR/?9000160...ur_HFSQL_Linux
    et en effet ça marche, j'arrive à me connecter avec la commande iodbctest, mais c'est en python que ça coince

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 391
    Points : 9 567
    Points
    9 567
    Par défaut
    Bonjour,

    Je viens de trouver le lien suivant. Je ne sais pas s'il y a plus d'infos mais peut-être pourras tu rentrer en contact avec l'utilisateur concerné. Attention tout de même, La discussion date un peu

    [EDIT]Il y a également celle-ci qui est plus récente (mais sans réponse). A voir si tu es anglophone et que tu veux bien entrer en contact avec l'utilisateur concerné.

  7. #7
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 102
    Points
    102
    Par défaut
    Bonjour,

    Je n'aime pas donner de "fausses réponses", mais... ne serait un pas mieux de passer par un WebService REST, pour l'implémenter en python ?

    Disons que :
    - HFSQL est fortement couplé à WinDev
    - Les WS REST fonctionnent super bien en WinDev
    - Il y a des fonctions pour générer du JSON en WLangage
    - En python, le JSON, se parcourt facilement

    Cette approche peut être intéressante pour l'évolutivité de votre architecture.

Discussions similaires

  1. connecter a hive depuis un code python
    Par ghizlanehrk dans le forum Big Data
    Réponses: 1
    Dernier message: 12/07/2018, 14h17
  2. Commandes CP et Rsync depuis Python : surchargent le serveur
    Par mox20 dans le forum Général Python
    Réponses: 1
    Dernier message: 21/12/2015, 11h59
  3. Lancer un programme sur un serveur distant depuis Python
    Par YoYoMoMo dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 02/02/2013, 15h03
  4. Réponses: 3
    Dernier message: 28/09/2007, 09h32
  5. Réponses: 2
    Dernier message: 05/09/2007, 02h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo