aufgrund der erhaltenen Antworten in:
viewtopic.php?f=1&t=52522
habe ich folgendes Python-Script erstellt:
Code: Alles auswählen
import mysql.connector as mc
def griddata(phost,pport,puser,ppassword,pdatabase,psql):
connection = mc.connect(host = phost,
port = pport,
user = puser,
password = ppassword,
database = pdatabase)
cursor = connection.cursor()
cursor.execute(psql)
result = cursor.fetchall()
results = [tuple(str(item) for item in t) for t in result]
cursor.close()
connection.close()
return results
und kann es in LibreOffice so aufrufen:
Code: Alles auswählen
Dim oScript, RS_Python, oMasterScriptProviderFactory, g_MasterScriptProvider
oMasterScriptProviderFactory = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
g_MasterScriptProvider = oMasterScriptProviderFactory.createScriptProvider("")
oScript = g_MasterScriptProvider.getScript("vnd.sun.star.script:mysqlgetdata.py$griddata?language=Python&location=user")
RS_Python = oScript.invoke(Array(DBHost,DBPort,DBUser,DBPass,NameDBInMySQL,"SELECT * from tabelle14 LIMIT 5000"),Array(),Array())
Ich habe davon ausgehend nun folgendes Script erstellt:
Code: Alles auswählen
import mysql.connector as mc
def gridcolumns(phost,pport,puser,ppassword,pdatabase,psql):
connection = mc.connect(host = phost,
port = pport,
user = puser,
password = ppassword,
database = pdatabase)
cursor = connection.cursor()
cursor.execute(psql)
columns = cursor.column_names
cursor.close()
connection.close()
return columns
Welches aber beim Aufruf mit:
Code: Alles auswählen
oMasterScriptProviderFactory = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
g_MasterScriptProvider = oMasterScriptProviderFactory.createScriptProvider("")
oScript = g_MasterScriptProvider.getScript("vnd.sun.star.script:mysqlgetcolumns.py$gridcolumns?language=Python&location=user")
RS_Python = oScript.invoke(Array(DBHost,DBPort,DBUser,DBPass,NameDBInMySQL,"SELECT * from tabelle14 LIMIT 1"),Array(),Array())
Msgbox RS_Python
"Es ist eine Ausnahme aufgetreten
Type: com.sun.star.uno.RuntimeException
Message: Error during invoking function gridcolumns in module file:///E:/LO_603/LibreOfficePortable/Data/settings/user/Scripts/python/mysqlgetcolumns.py (<class 'mysql.connector.errors.InternalError'>: Unread result found
File "E:\LO_603\LibreOfficePortable\App\libreoffice\program\pythonscript.py", line 875, in invoke
ret = self.func( *args )
File "E:\LO_603\LibreOfficePortable\Data\settings\user\Scripts\python\mysqlgetcolumns.py", line 14, in gridcolumns
cursor.close()
File "E:\LO_603\LibreOfficePortable\App\libreoffice\program\python-core-3.5.4\lib\mysql\connector\cursor.py", line 397, in close
self._connection.handle_unread_result()
File "E:\LO_603\LibreOfficePortable\App\libreoffice\program\python-core-3.5.4\lib\mysql\connector\connection.py", line 1277, in handle_unread_result
raise errors.InternalError("Unread result found")
). (1)"
1. Was ist falsch?
2. Wie kann ich in einem zweiten Schritt beide Python-Scripte in eine *.py-Datei schreiben, so das ich sowohl "griddata" wie auch "gridcolumns" ansprechen kann?
Gruß
Stephan