Bonsoir,
Après avoir créer un script Python pour creer un fichier .csv, j’ ai démarré un programme pour me connecter à Libreoffice Base afin de mettre à jour certains champs d’ une table.
Le script en cours d’ élaboration:
#!/usr/bin/env python
import uno
import csv
def connectionDb():
local_context = uno.getComponentContext()
resolver = local_context.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local_context)
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
return ctx
nomTable = 'T_Ttr'
baseBourse = 'file:///mnt/El_Casot/Yvon/Finance/Bourse/BDD/Archive/Bourse-2312.odb'
def importDonnees(ctx, nomTable, fichierCsv):
db_context = ctx.ServiceManager.createInstanceWithContext("com.sun.star.sdb.DatabaseContext", ctx)
db = db_context.getByName(baseBourse)
connection = db.getConnection("", "")
statement = connection.createStatement()
with open(fichierCsv, mode='r') as file:
reader = csv.DictReader(file)
for row in reader:
sql = f"UPDATE {nomTable} SET Cf_Ttr = '{row['CfTitre']}', DtObjectif = '{row['rsltDateConsensus']}' WHERE CfTitre = '{row['CfTitre']}'"
statement.executeUpdate(sql)
connection.close() # Fermer la connexion après l'utilisation
g_exportedScripts = (connectionDb(),)
Ce script se lance depuis un bouton d’ un formulaire. En retour, j’ obtiens le message suivant:
Une erreur de structure de script s' est produite lors de l' execution du script vnd.sun.stat.script:tstimportCsv.py connectionDb?langage=Ppython&location=user en Python.
Message : <class'ooo_script_framework.com.sun.star.connection.NoConnectException>:connector:couldn't connect to socket (Connection refus hse) at /home/buildslave/source/libo-core/io/source/connector/connector.cxx;118
File"/opt/libreoffice24.8/program/pythonscript.py",line 1055, in getScript mod = self.provCtx.getModuleByUrl(fileUri)
File"/opt/libreoffice24.8/program/pythonscript.py",line 492, in getModuleByUrlexec(code, entry.module.__dict__)
File "/home/elfouster/.config/libreoffice/4/user/Scripts/python/tstimportCsv.py", line 29, in "module"
g_exportedScripts = (connectionDb(),)
File "/home/elfouster/.config/libreoffice/4/user/Scripts/python/tstimportCsv.py", line 9, in connectionDb
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
Le port 2002 serait-il en cause?
Cordialement