ich erstelle in einer MySQL-DB einen neuen Datensatz aus LibreOffice heraus, mit folgendem Code:
Code: Alles auswählen
Sub neuer_DS()
txtSQL = "INSERT INTO `sprachen` (`Sprache`, `Kuerzel`) VALUES ('Testsprache', 'te')"
RS_Python = Tools.RunPy(,,"sql_ausfuehren",txtSQL)
Msgbox RS_Python
End Sub
Function RunPy(Optional DBPar(), Optional Scriptname, FunctionName, tSQL)
Dim par(4)
If IsMissing(DBPar) Then
par(0) = DBHost
par(1) = DBPort
par(2) = DBUser
par(3) = DBPass
par(4) = NameDBInMySQL
Else
par() = DBPar()
End If
Redim Preserve par(5)
par(5) = tSQL
If IsMissing(Scriptname) Then Scriptname = "mysqlgetdata2.py"
oMasterScriptProviderFactory = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
g_MasterScriptProvider = oMasterScriptProviderFactory.createScriptProvider("")
oScript = g_MasterScriptProvider.getScript("vnd.sun.star.script:" & Scriptname & "$" & FunctionName & "?language=Python&location=user")
RunPy = oScript.invoke(par(),Array(),Array())
End Function
Code: Alles auswählen
from mysql.connector import connect
def sql_ausfuehren(host, port, user, password, database, sql):
with connect(
host=host, port=port, user=user, password=password, database=database
) as connection:
with connection.cursor() as cursor:
cursor.execute(sql)
connection.commit()
Versucht habe ich (in Anlehnung an: viewtopic.php?t=10420) soetwas hier (auch mit return lastentry.fetchall()), das klappt aber nicht:
Code: Alles auswählen
from mysql.connector import connect
def sql_ausfuehren(host, port, user, password, database, sql):
with connect(
host=host, port=port, user=user, password=password, database=database
) as connection:
with connection.cursor() as cursor:
lastentry = cursor.execute(sql)
connection.commit()
return lastentry
auch habe ich, von LibreOffice (StarBasic) aus, das hier probiert:
Code: Alles auswählen
txtSQL = "CALL IDENTITY()"
RS_Python = Tools.RunPy(,,"sql_ausfuehren",txtSQL)
Msgbox RS_Python
Gruß
Stephan