papi-web-org / papi-web

Papi-web
Other
7 stars 3 forks source link

[BUG] Accès base de données depuis ubuntu #56

Closed tfondrat closed 2 days ago

tfondrat commented 2 days ago

Description du bug

Tentative de faire fonctionner papi-web sous ubuntu. Problème d'exécution des requêtes

Comment reproduire le bug

Système : Ubuntu 22.04.5 LTS

  1. Installation pilote1 ) Isntallation driver access : sudo apt install mdbtools après avoir recherché l'emplacement de la librairie, j'ai modifié le fichier /etc/odbinst.ini : [MDBTools] Description=MDBTools Driver Driver=/usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so Setup=/usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so FileUsage=1 UsageCount=2

  2. Modification dans database/access/access.py/access_driver() : def access_driver() -> str:
    return "MDBTools" #'Ancien : Microsoft Access Driver (.mdb, .accdb)' Le programme se lance

3 Lors de la tentative d'accès à la base erreur File "/home/tfondrat/papi-web/database/access.py", line 64, in _execute self.cursor.execute(query, params) pyodbc.InterfaceError: ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLNumParams)')

4 Tests interactif Reprise des variables : query= "SELECT Value FROM info WHERE Variable = ?" params="('NbrRondes',)" query= "SELECT Value FROM info WHERE Variable = ?" MEME ERREUR. Programme qui fonctionne : import pyodbc

Configuration de la chaîne de connexion

conn_str = ("DRIVER={MDBTools};""DBQ=./TournoiLyceesRolandGarros.papi;") try: conn = pyodbc.connect(conn_str) cursor = conn.cursor() cursor.execute("SELECT Value FROM info WHERE Variable = 'NbrRondes'") for row in cursor.fetchall(): print(row) except Exception as e: print("Erreur :", e)

PROPOSITION : Modifiser la fonction def _execute(self, query: str, params: tuple = ()): de la classe AccessDataBase Il semble que le pilote sous linux ne gère pas le nombre de paramètres sous linux.

Amaras commented 2 days ago

Thank you for your bug report. I have never managed to find an ODBC driver for Linux that could connect correctly to a papi database.

We won't fix this issue with the drivers, but we will simply not use Access, eventually