PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 26 → Connection HFSQL via Python
Connection HFSQL via Python
Started by Raphaël Vignes, Jan., 22 2021 1:29 PM - 5 replies
Posted on January, 22 2021 - 1:29 PM
Bonjour,
je souhaite me connecter à une base HFSQL avec le driver windev et en utilisant le client python odbc pyodbc (le seule que je connaisse).
Je suis sous Ubuntu et en python 3.8


Vu que le driver HFSQL ne peut s'installer qu'avec le gestionnaire de driver iODBC, j'ai désinstallé unixODBC et installé iODBC. Puis j'ai testé avec succès la connexion avec iodbctest.
Mais je bloque ensuite sur l'utilisation de pyodbc avec iODBC.
Nativement, pyodbc ne s'interface qu'avec UnixODBC et les solutions proposées ici:
https://github.com/mkleehammer/pyodbc/issues/444 et ici https://github.com/mkleehammer/pyodbc/tree/444-iodbc ne sont pas fonctionnelles.
Quelqu'un a t'il réussit à utiliser le driver HFSQL avec pyodbc (ou un autre package python ? ).
Merci d'avance !
Registered member
4 messages
Posted on February, 23 2021 - 9:03 PM
Bonjour,
J'ai exactement le même problème que vous et j'ai déjà suivi les même étapes.
Sur Windows le connecteur ODBC fonctionne avec Excel mais le connecteur ODBC fait planter Python à la connexion.
Avec Linux, vous avez bien résumé le problème, je bloque à la compilation de pyodbc avec iODBC.
Avez-vous trouvez une astuce ?

Merci
Registered member
2,198 messages
Posted on February, 24 2021 - 4:09 AM
Bonjour,
Que dit le ST à ce sujet ?

--
Il y a peut être plus simple, mais, ça tourne
Registered member
4 messages
Posted on February, 24 2021 - 8:56 AM
Bonjour,
Je n'ai pas contacté le ST, je ne suis pas client direct chez Windev, je suis utilisateurs d'un produit qui est développé avec Windev par une société et qui utilise une BDD HFSQL.

Si on lit le contenu de cette page https://pcsoft.fr/hfsql/ouverture.htm, le connecteur ODBC devrait être compatible avec Python, mais je n'ai vu personne réussir pour le moment.
Registered member
4 messages
Posted on February, 26 2021 - 4:20 PM
J'ai tester aussi avec le module turbodbc sur Windows. Python ne plante plus mais j'ai toujours des erreurs, ça ne fonctionne pas.

Petite astuce qui peut en aider certains : La connexion à une base de donnée avec ODBC fonctionne en Powershell.
Registered member
4 messages
Posted on March, 01 2021 - 10:02 AM
J'ai trouvé la parade. Il faut utiliser sous windows le module pypyodbc.

Vous allez sûrement vous retrouver avec des erreurs sur les tables avec des dates. Erreur du genre :
"ValueError: invalid literal for int() with base 10"

Il faut modifier le package pypyodbc dans le fichier pypyodbc.py et remplacer le code suivant (ligne 600) :

def dt_cvt(x):
if py_v3:
x = x.decode('ascii')
if x == '': return None
else: return datetime.date(int(x[0:4]),int(x[5:7]),int(x[8:10]))

Par ça :

def dt_cvt(x):
if py_v3:
x = x.decode('ascii')
if x == '': return None
elif len(x) == 8: return datetime.date(int(x[0:4]),int(x[4:6]),int(x[6:8]))
else: return datetime.date(int(x[0:4]),int(x[5:7]),int(x[8:10]))

++