PyAPplus64 package¶
Submodules¶
PyAPplus64.applus module¶
- class PyAPplus64.applus.APplusServer(db_settings: PyAPplus64.applus_db.APplusDBSettings, server_settings: PyAPplus64.applus_server.APplusServerSettings)¶
Bases:
object
Verbindung zu einem APplus DB und App Server mit Hilfsfunktionen für den komfortablen Zugriff.
- Parameter
db_settings (APplusDBSettings) – die Einstellungen für die Verbindung mit der Datenbank
server_settings (APplusAppServerSettings) – die Einstellungen für die Verbindung mit dem APplus App Server
web_settings (APplusWebServerSettings) – die Einstellungen für die Verbindung mit dem APplus Web Server
- property client_adaptdb: zeep.client.Client¶
- property client_nummer: zeep.client.Client¶
- property client_table: zeep.client.Client¶
- property client_xml: zeep.client.Client¶
- completeSQL(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], raw: bool = False) str ¶
Vervollständigt das SQL-Statement. Es wird z.B. der Mandant hinzugefügt.
- Parameter
sql (sql_utils.SqlStatement) – das SQL Statement
raw (boolean) – soll completeSQL ausgeführt werden? Falls True, wird die Eingabe zurückgeliefert
- Rückgabe
das vervollständigte SQL-Statement
- Rückgabetyp
str
- dbExecute(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any, raw: bool = False) Any ¶
Führt ein SQL Statement (z.B. update oder insert) aus. Das SQL wird zunächst vom Server angepasst, so dass z.B. Mandanteninformation hinzugefügt werden.
- dbQuery(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], f: Callable[[pyodbc.Row], None], *args: Any, raw: bool = False) None ¶
Führt eine SQL Query aus und führt für jede Zeile die übergeben Funktion aus. Das SQL wird zunächst vom Server angepasst, so dass z.B. Mandanteninformation hinzugefügt werden.
- dbQueryAll(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any, raw: bool = False, apply: Optional[Callable[[pyodbc.Row], Any]] = None) Any ¶
Führt eine SQL Query aus und liefert alle Zeilen zurück. Das SQL wird zunächst vom Server angepasst, so dass z.B. Mandanteninformation hinzugefügt werden.
- dbQuerySingleRow(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any, raw: bool = False) Optional[pyodbc.Row] ¶
Führt eine SQL Query aus, die maximal eine Zeile zurückliefern soll. Diese Zeile wird geliefert.
- dbQuerySingleRowDict(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any, raw: bool = False) Optional[Dict[str, Any]] ¶
Führt eine SQL Query aus, die maximal eine Zeile zurückliefern soll. Diese Zeile wird als Dictionary geliefert.
- dbQuerySingleValue(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any, raw: bool = False) Any ¶
Führt eine SQL Query aus, die maximal einen Wert zurückliefern soll. Dieser Wert oder None wird geliefert.
- dbQuerySingleValues(sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any, raw: bool = False) Sequence[Any] ¶
Führt eine SQL Query aus, die nur eine Spalte zurückliefern soll.
- db_settings: PyAPplus64.applus_db.APplusDBSettings¶
Die Einstellungen für die Datenbankverbindung
- execUseXMLRowDelete(table: str, id: int) None ¶
- getAppClient(package: str, name: str) zeep.client.Client ¶
Erzeugt einen zeep - Client für den APP-Server. Mittels dieses Clients kann eines WSDL Schnittstelle des APP-Servers angesprochen werden. Wird als package „p2core“ und als name „Table“ verwendet und der resultierende client „client“ genannt, dann kann z.B. mittels „client.service.getCompleteSQL(sql)“ vom AppServer ein Vervollständigen des SQLs angefordert werden.
- Parameter
package (string) – das Packet, z.B. „p2core“
name – der Name im Packet, z.B. „Table“
- Rückgabe
den Client
- Rückgabetyp
Client
- getDBConnection() pyodbc.Connection ¶
Liefert eine pyodbc-Connection zur APplus DB. Diese muss genutzt werden, wenn mehrere Operationen in einer Transaktion genutzt werden sollen. Ansonsten sind die Hilfsmethoden wie
APplusServer.dbQuery()
zu bevorzugen. Diese Connection kann in Verbindung mit den Funktionen ausPyAPplus64.applus_db
genutzt werden. Die Verbindung sollte nach Benutzung wieder freigegeben oder geschlossen werden.
- getTableFields(table: str, isComputed: Optional[bool] = None) Set[str] ¶
Liefert die Namen aller Felder einer Tabelle.
- Parameter
table – Name der Tabelle
isComputed – wenn gesetzt, werden nur die Felder geliefert, die berechnet werden oder nicht berechnet werden
- Rückgabe
Liste aller Feld-Namen
- Rückgabetyp
{str}
- getUniqueFieldsOfTable(table: str) Dict[str, List[str]] ¶
Liefert alle Spalten einer Tabelle, die eindeutig sein müssen. Diese werden als Dictionary gruppiert nach Index-Namen geliefert. Jeder Eintrag enthält eine Liste von Feldern, die zusammen eindeutig sein müssen.
- getWebClient(url: str) zeep.client.Client ¶
Erzeugt einen zeep - Client für den Web-Server. Mittels dieses Clients kann die von einer ASMX-Seite zur Verfügung gestellte Schnittstelle angesprochen werden. Als parameter wird die relative URL der ASMX-Seite erwartet. Die Base-URL automatisch ergänzt. Ein Beispiel für eine solche relative URL ist „masterdata/artikel.asmx“.
ACHTUNG: Als Umgebung wird die Umgebung des sich anmeldenden Nutzers verwendet. Sowohl Nutzer als auch Umgebung können sich von den für App-Clients verwendeten Werten unterscheiden. Wenn möglich, sollte ein App-Client verwendet werden.
- Parameter
url – die relative URL der ASMX Seite, z.B. „masterdata/artikel.asmx“
- Rückgabe
den Client
- Rückgabetyp
Client
- importUdfsAndViews()¶
Importiert bestimmte Views und UDFs :param environment: die Umgebung, in die Importiert werden soll :type environment: string :param views: Views, die importiert werden sollen :type views: [string] :param udfs: Views, die importiert werden sollen :type udfs: [string] :return: Infos zur Ausführung :rtype: str
- isDBTableKnown(table: str) bool ¶
Prüft, ob eine Tabelle im System bekannt ist
- job: PyAPplus64.applus_job.APplusJob¶
erlaubt Arbeiten mit Jobs
- makeWebLink(base: str, **kwargs: Any) str ¶
- makeWebLinkAuftrag(**kwargs: Any) str ¶
- makeWebLinkBauftrag(**kwargs: Any) str ¶
- makeWebLinkVKRahmen(**kwargs: Any) str ¶
- makeWebLinkWarenaugang(**kwargs: Any) str ¶
- makeWebLinkWauftrag(**kwargs: Any) str ¶
- makeWebLinkWauftragPos(**kwargs: Any) str ¶
- mkUseXMLRowDelete(table: str, id: int) PyAPplus64.applus_usexml.UseXmlRowDelete ¶
- mkUseXMLRowInsert(table: str) PyAPplus64.applus_usexml.UseXmlRowInsert ¶
Erzeugt ein Objekt zum Einfügen eines neuen DB-Eintrags.
- Parameter
table (str) – DB-Tabelle in die eingefügt werden soll
- Rückgabe
das XmlRow-Objekt
- Rückgabetyp
- mkUseXMLRowInsertOrUpdate(table: str) PyAPplus64.applus_usexml.UseXmlRowInsertOrUpdate ¶
Erzeugt ein Objekt zum Einfügen oder Updaten eines DB-Eintrags.
- Parameter
table (string) – DB-Tabelle in die eingefügt werden soll
- Rückgabe
das XmlRow-Objekt
- Rückgabetyp
- mkUseXMLRowUpdate(table: str, id: int) PyAPplus64.applus_usexml.UseXmlRowUpdate ¶
- nextNumber(obj: str) str ¶
Erstellt eine neue Nummer für das Objekt und legt diese Nummer zurück.
- reconnectDB() None ¶
- releaseDBConnection(conn: pyodbc.Connection) None ¶
Gibt eine DB-Connection zur Wiederverwendung frei
- scripttool: PyAPplus64.applus_scripttool.APplusScriptTool¶
erlaubt den einfachen Zugriff auf Funktionen des ScriptTools
- server_conn: PyAPplus64.applus_server.APplusServerConnection¶
erlaubt den Zugriff auf den AppServer
- server_settings: PyAPplus64.applus_server.APplusServerSettings¶
Einstellung für die Verbindung zum APP- und Webserver
- sysconf: PyAPplus64.applus_sysconf.APplusSysConf¶
erlaubt den Zugriff auf die Sysconfig
- updateDatabase(file: str) str ¶
Führt eine DBAnpass-xml Datei aus. :param file: DB-Anpass Datei, die ausgeführt werden soll :type file: string :return: Infos zur Ausführung :rtype: str
- useXML(xml: str) Any ¶
Ruft
p2core.xml.usexml
auf. Wird meist durch einUseXMLRow-Objekt
aufgerufen.
- class PyAPplus64.applus.APplusServerConfigDescription(descr: str, yamlfile: FileDescriptorOrPath, user: Optional[str] = None, env: Optional[str] = None)¶
Bases:
object
Beschreibung einer Configuration bestehend aus Config-Datei, Nutzer und Umgebung.
- Parameter
descr (str) – Beschreibung als String, nur für Ausgabe gedacht
yamlfile ('FileDescriptorOrPath') – die Datei
user (Optional[str]) – der Nutzer
env (Optional[str]) – die Umgebung
- connect() PyAPplus64.applus.APplusServer ¶
- PyAPplus64.applus.applusFromConfig(yamlString: str, user: Optional[str] = None, env: Optional[str] = None) PyAPplus64.applus.APplusServer ¶
Läd Einstellungen aus einer Config-Datei und erzeugt daraus ein APplus-Objekt
- PyAPplus64.applus.applusFromConfigDict(yamlDict: Dict[str, Any], user: Optional[str] = None, env: Optional[str] = None) PyAPplus64.applus.APplusServer ¶
Läd Einstellungen aus einer Config und erzeugt daraus ein APplus-Objekt
- PyAPplus64.applus.applusFromConfigFile(yamlfile: FileDescriptorOrPath, user: Optional[str] = None, env: Optional[str] = None) PyAPplus64.applus.APplusServer ¶
Läd Einstellungen aus einer Config-Datei und erzeugt daraus ein APplus-Objekt
PyAPplus64.applus_db module¶
- class PyAPplus64.applus_db.APplusDBSettings(server: str, database: str, user: str, password: str)¶
Bases:
object
Einstellungen, mit welcher DB sich verbunden werden soll.
- connect() pyodbc.Connection ¶
Stellt eine neue Verbindung her und liefert diese zurück.
- getConnectionString() str ¶
Liefert den ODBC Connection-String für die Verbindung. :return: den Connection-String
- class PyAPplus64.applus_db.DBTableIDs¶
Bases:
object
Klasse, die Mengen von IDs gruppiert nach Tabellen speichert
- add(table: str, *ids: int) None ¶
fügt Eintrag hinzu
- Parameter
table (str) – die Tabelle
id – die ID
- getTable(table: str) Set[int] ¶
Liefert die Menge der IDs für eine bestimmte Tabelle.
- Parameter
table (str) – die Tabelle
- Rückgabe
die IDs
- PyAPplus64.applus_db.getUniqueFieldsOfTable(cnxn: pyodbc.Connection, table: str) Dict[str, List[str]] ¶
Liefert alle Spalten einer Tabelle, die eindeutig sein müssen. Diese werden als Dictionary gruppiert nach Index-Namen geliefert. Jeder Eintrag enthält eine Liste von Feldern, die zusammen eindeutig sein müssen.
- PyAPplus64.applus_db.rawExecute(cnxn: pyodbc.Connection, sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any) Any ¶
Führt ein SQL Statement direkt aus
- PyAPplus64.applus_db.rawQuery(cnxn: pyodbc.Connection, sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], f: Callable[[pyodbc.Row], None], *args: Any) None ¶
Führt eine SQL Query direkt aus und führt für jede Zeile die übergeben Funktion aus.
- PyAPplus64.applus_db.rawQueryAll(cnxn: pyodbc.Connection, sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any, apply: Optional[Callable[[pyodbc.Row], Any]] = None) Sequence[Any] ¶
Führt eine SQL Query direkt aus und liefert alle Zeilen zurück. Wenn apply gesetzt ist, wird die Funktion auf jeder Zeile ausgeführt und das Ergebnis ausgeben, die nicht None sind.
- PyAPplus64.applus_db.rawQuerySingleRow(cnxn: pyodbc.Connection, sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any) Optional[pyodbc.Row] ¶
Führt eine SQL Query direkt aus, die maximal eine Zeile zurückliefern soll. Diese Zeile wird geliefert.
- PyAPplus64.applus_db.rawQuerySingleValue(cnxn: pyodbc.Connection, sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], *args: Any) Any ¶
Führt eine SQL Query direkt aus, die maximal einen Wert zurückliefern soll. Dieser Wert oder None wird geliefert.
- PyAPplus64.applus_db.row_to_dict(row: pyodbc.Row) Dict[str, Any] ¶
Konvertiert eine Zeile in ein Dictionary
PyAPplus64.applus_job module¶
- class PyAPplus64.applus_job.APplusJob(server: APplusServer)¶
Bases:
object
Zugriff auf Jobs
- Parameter
server (APplusServer) – die Verbindung zum Server
- property client: zeep.client.Client¶
- createSOAPJob(bez: str) str ¶
Erzeugt einen neuen SOAP Job mit der gegebenen Bezeichnung und liefert die neue JobID. :param bez: die Bezeichnung des neuen Jobs :type bez: str :return: die neue JobID :rtype: str
- finish(jobId: str, status: int, resurl: str) bool ¶
Beendet den Job :param jobId: die ID des Jobs :type jobId: str :param status: der Status 2 (OK), 3 (Fehler) :type status: int :param resurl: die neue resurl des Jobs :type resurl: str
- getInfo(jobId: str) str ¶
Liefert die Info eines Jobs :param jobId: die ID des Jobs :type jobId: str :return: die Info :rtype: str
- getPtURL(jobId: str) str ¶
Liefert die PtURL eines Jobs :param jobId: die ID des Jobs :type jobId: str :return: die Pt-URL :rtype: str
- getResult(jobId: str) str ¶
Liefert das Result eines Jobs :param jobId: die ID des Jobs :type jobId: str :return: das Result :rtype: str
- getResultURL(jobId: str) str ¶
Liefert die ResultURL eines Jobs :param jobId: die ID des Jobs :type jobId: str :return: die Result-URL :rtype: str
- getResultURLString(jobId: str) Optional[str] ¶
Liefert die ResultURL eines Jobs, wobei ein evtl. Präfix „retstring://“ entfernt wird und alle anderen Werte durch None ersetzt werden. :param jobId: die ID des Jobs :type jobId: str :return: die Result-URL als String :rtype: str
- getStatus(jobId: str) str ¶
Liefert Informationen zum Job :param jobId: die ID des Jobs :type jobId: str :return: die Infos :rtype: str
- kill(jobId: str) None ¶
Startet einen Job :param jobId: die ID des Jobs :type jobId: str
- restart(jobId: str) str ¶
Startet einen Job neu :param jobId: die ID des Jobs :type jobId: str :return: die URL des Jobs :rtype: str
- setInfo(jobId: str, info: str) bool ¶
Setzt die Informationen zu dem Job :param jobId: die ID des Jobs :type jobId: str :param info: die neuen Infos :type info: str
- setPosition(jobId: str, pos: int, max: int) bool ¶
Schrittfunktion :param jobId: die ID des Jobs :type jobId: str :param pos: Position :type pos: int :param max: Anzahl Schritte in Anzeige :type max: int
- setPtURL(jobId: str, pturl: str) None ¶
Setzt die ResultURL eines Jobs :param jobId: die ID des Jobs :type jobId: str :param pturl: die neue PtURL :type pturl: str
- setResult(jobId: str, res: str) None ¶
Setzt das Result eines Jobs :param jobId: die ID des Jobs :type jobId: str :param res: das neue Result :type res: str
- setResultURL(jobId: str, resurl: str) None ¶
Setzt die ResultURL eines Jobs :param jobId: die ID des Jobs :type jobId: str :param resurl: die neue Result-URL :type resurl: str
- start(jobId: str) bool ¶
Startet einen Job :param jobId: die ID des Jobs :type jobId: str
PyAPplus64.applus_scripttool module¶
- class PyAPplus64.applus_scripttool.APplusScriptTool(server: PyAPplus64.applus.APplusServer)¶
Bases:
object
Zugriff auf AppServer ScriptTool
- Parameter
server (APplusServerConnection) – die Verbindung zum Server
- property client: zeep.client.Client¶
- getAllEnvironments()¶
Liefert alle Umgebungen
- Rückgabe
die gefundenen Umgebungen
- Rückgabetyp
[str]
- getCurrentDate() str ¶
- getCurrentDateTime() str ¶
- getCurrentTime() str ¶
- getInstallPath() str ¶
Liefert den Installionspfad des Appservers
- getInstallPathAppServer() pathlib.Path ¶
Liefert den Installionspfad des Appservers als PathLib-Path
- getInstallPathWebServer() pathlib.Path ¶
Liefert den Installionspfad des Webservers als PathLib-Path
- getLoginName() str ¶
- getMandant() str ¶
Liefert den aktuellen Mandanten
- getMandantName() str ¶
Liefert den Namen des aktuellen Mandanten
- getServerInfo() Optional[lxml.etree.Element] ¶
Liefert Informationen zum Server als ein XML Dokument.
- Rückgabe
das gefundene und geparste XML-Dokument
- Rückgabetyp
ET.Element
- getServerInfoString() str ¶
Liefert Informationen zum Server als String. Dieser String repräsentiert ein XML Dokument.
- Rückgabe
das XML-Dokument als String
- Rückgabetyp
str
- getSystemName() str ¶
- getUserFullName() str ¶
- getUserName() str ¶
- getXMLDefinition(obj: str, mandant: str = '', checkFileExists: bool = False) Optional[lxml.etree.Element] ¶
Läd die XML-Definition als String vom APPServer. und parst das XML in ein minidom-Dokument.
- Parameter
obj (str) – das Objekt, dessen Definition zu laden ist, „Artikel“ läd z.B. „ArtikelDefinition.xml“
mandant (str optional) – der Mandant, dessen XML-Doku geladen werden soll, wenn „“ wird der Standard-Mandant verwendet
- Rückgabe
das gefundene und geparste XML-Dokument
- Rückgabetyp
ET.Element
- getXMLDefinitionObj(obj: str, mandant: str = '') Optional[PyAPplus64.applus_scripttool.XMLDefinition] ¶
Benutzt getXMLDefinitionObj und liefert den Top-Level „Object“ Knoten zurück, falls zusätzlich ein MD5 Knoten existiert, also falls das Dokument wirklich vom Dateisystem geladen werden konnte. Ansonten wird None geliefert.
- Parameter
obj (str) – das Objekt, dess Definition zu laden ist, „Artikel“ läd z.B. „ArtikelDefinition.xml“
mandant (str optional) – der Mandant, dessen XML-Doku geladen werden soll, wenn „“ wird der Standard-Mandant verwendet
- Rückgabe
das gefundene und geparste XML-Dokument
- Rückgabetyp
Optional[XMLDefinition]
- getXMLDefinitionString(obj: str, mandant: str = '') str ¶
Läd die XML-Defintion als String vom APPServer. Auch wenn kein XML-Dokument im Dateisystem gefunden wird, wird ein String zurückgeliefert, der einen leeren Top-„Object“ Knoten enthält. Für gefundene XML-Dokumente gibt es zusätzlich einen Top-„MD5“-Knoten.
- Parameter
obj (str) – das Objekt, dessen Definition zu laden ist, „Artikel“ läd z.B. „ArtikelDefinition.xml“
mandant (str optional) – der Mandant, dessen XML-Doku geladen werden soll, wenn „“ wird der Standard-Mandant verwendet
- Rückgabe
das gefundene XML-Dokument als String
- Rückgabetyp
str
- class PyAPplus64.applus_scripttool.XMLDefinition(root: lxml.etree.Element)¶
Bases:
object
Repräsentation eines XML-Dokuments
- getDuplicate() Tuple[Set[str], bool] ¶
Extrahiert alle Properties, die für Duplizieren konfiguriert sind. Zudem wird ein Flag geliefert, ob diese Properties ein oder ausgeschlossen werden sollen. :return: Tuple aus allen Properties und ob dies aus- (True) oder ein-(False) zuschließen sind. :rtype: Tuple[Set[str], bool]
- root: lxml.etree.Element¶
das Root-Element, repräsentiert „object“ aus Datei.
PyAPplus64.applus_server module¶
- class PyAPplus64.applus_server.APplusServerConnection(settings: PyAPplus64.applus_server.APplusServerSettings)¶
Bases:
object
Verbindung zu einem APplus APP- und Web-Server
- Parameter
settings (APplusAppServerSettings) – die Einstellungen für die Verbindung mit dem APplus Server
- getAppClient(package: str, name: str) zeep.client.Client ¶
Erzeugt einen zeep - Client für den APP-Server. Mittels dieses Clients kann die WSDL Schnittstelle angesprochen werden. Wird als package „p2core“ und als name „Table“ verwendet und der resultierende client „client“ genannt, dann kann z.B. mittels „client.service.getCompleteSQL(sql)“ vom AppServer ein Vervollständigen des SQLs angefordert werden.
- Parameter
package (string) – das Packet, z.B. „p2core“
name – der Name im Packet, z.B. „Table“
- Rückgabe
den Client
- Rückgabetyp
Client
- getWebClient(url: str) zeep.client.Client ¶
Erzeugt einen zeep - Client für den Web-Server. Mittels dieses Clients kann die von einer ASMX-Seite zur Verfügung gestellte Schnittstelle angesprochen werden. Als parameter wird die relative URL der ASMX-Seite erwartet. Die Base-URL automatisch ergänzt. Ein Beispiel für eine solche relative URL ist „masterdata/artikel.asmx“.
ACHTUNG: Als Umgebung wird die Umgebung des sich anmeldenden Nutzers verwendet. Sowohl Nutzer als auch Umgebung können sich von den für App-Clients verwendeten Werten unterscheiden. Wenn möglich, sollte ein App-Client verwendet werden.
- Parameter
url – die relative URL der ASMX Seite, z.B. „masterdata/artikel.asmx“
- Rückgabe
den Client
- Rückgabetyp
Client
- class PyAPplus64.applus_server.APplusServerSettings(webserver: str, appserver: str, appserverPort: int, user: str, env: Optional[str] = None, webserverUser: Optional[str] = None, webserverUserDomain: Optional[str] = None, webserverPassword: Optional[str] = None)¶
Bases:
object
Einstellungen, mit welchem APplus App- and Web-Server sich verbunden werden soll.
PyAPplus64.applus_sysconf module¶
- class PyAPplus64.applus_sysconf.APplusSysConf(server: APplusServer)¶
Bases:
object
SysConf Zugriff mit Cache über AppServer
- Parameter
server (APplusServer) – die Verbindung zum Server
- clearCache() None ¶
- property client: zeep.client.Client¶
- getBoolean(module: str, name: str, useCache: bool = True) bool ¶
- getDouble(module: str, name: str, useCache: bool = True) float ¶
- getInt(module: str, name: str, useCache: bool = True) int ¶
- getList(module: str, name: str, useCache: bool = True, sep: str = ',') Optional[Sequence[str]] ¶
- getString(module: str, name: str, useCache: bool = True) str ¶
PyAPplus64.applus_usexml module¶
- class PyAPplus64.applus_usexml.UseXmlRow(applus: APplusServer, table: str, cmd: str)¶
Bases:
object
Klasse, die eine XML-Datei erzeugen kann, die mittels p2core.useXML genutzt werden kann. Damit ist es möglich APplus BusinessObjekte zu erzeugen, ändern und zu löschen. Im Gegensatz zu direkten DB-Zugriffen, werden diese Anfragen über den APP-Server ausgeführt. Dabei werden die von der Weboberfläche bekannten Checks und Änderungen ausgeführt. Als sehr einfaches Beispiel wird z.B. INSDATE oder UPDDATE automatisch gesetzt. Interessanter sind automatische Änderungen und Checks.
Bei der Benutzung wird zunächst ein Objekt erzeugt, dann evtl. mittels
addField()
Felder hinzugefügt und schließlich mittelsexec()
an den AppServer übergeben. Normalerweise sollte die Klasse nicht direkt, sondern über Unterklassen für das Einfügen, Ändern oder Löschen benutzt werden.- Parameter
applus (APplusServer) – Verbindung zu APplus
table (str) – die Tabelle
cmd (str) – cmd-attribut der row, also ob es sich um ein Update, ein Insert oder ein Delete handelt
- addField(name: Optional[str], value: Any) None ¶
Fügt ein Feld zum Row-Node hinzu.
- Parameter
name (string) – das Feld
value – Wert des Feldes
- addTimestampField(id: int, ts: Optional[bytes] = None) None ¶
Fügt ein Timestamp-Feld hinzu. Wird kein Timestamp übergeben, wird mittels der ID der aktuelle Timestamp aus der DB geladen. Dabei kann ein Fehler auftreten. Ein Timestamp-Feld ist für Updates und das Löschen nötig um sicherzustellen, dass die richtige Version des Objekts geändert oder gelöscht wird. Wird z.B. ein Objekt aus der DB geladen, inspiziert und sollen dann Änderungen gespeichert werden, so sollte der Timestamp des Ladens übergeben werden. So wird sichergestellt, dass nicht ein anderer User zwischenzeitlich Änderungen vornahm. Ist dies der Fall, wird dann bei „exec“ eine Exception geworfen.
- Parameter
id (string) – DB-id des Objektes dessen Timestamp hinzugefügt werden soll
ts (bytes) – Fester Timestamp der verwendet werden soll, wenn None wird der Timestamp aus der DB geladen.
- addTimestampIDFields(id: int, ts: Optional[bytes] = None) None ¶
Fügt ein Timestamp-Feld sowie ein Feld id hinzu. Wird kein Timestamp übergeben, wird mittels der ID der aktuelle Timestamp aus der DB geladen. Dabei kann ein Fehler auftreten. Intern wird
addTimestampField()
benutzt.- Parameter
id (string) – DB-id des Objektes dessen Timestamp hinzugefügt werden soll
ts (bytes) – Fester Timestamp der verwendet werden soll, wenn None wird der Timestamp aus der DB geladen.
- checkFieldSet(name: Optional[str]) bool ¶
Prüft, ob ein Feld gesetzt wurde
- checkFieldsSet(*names: str) bool ¶
Prüft, ob alle übergebenen Felder gesetzt sind
- exec() Any ¶
Führt die UseXmlRow mittels useXML aus. Je nach Art der Zeile wird etwas zurückgeliefert oder nicht. In jedem Fall kann eine Exception geworfen werden.
- getField(name: str) Any ¶
Liefert den Wert eines gesetzten Feldes
- class PyAPplus64.applus_usexml.UseXmlRowDelete(applus: APplusServer, table: str, id: int, ts: Optional[bytes] = None)¶
Bases:
PyAPplus64.applus_usexml.UseXmlRow
Klasse, die eine XML-Datei für das Löschen eines neuen Datensatzes erzeugen kann. Die Felder id und timestamp werden automatisch gesetzt. Dies sind die einzigen Felder, die gesetzt werden sollten.
- Parameter
applus (APplusServer) – Verbindung zu APplus
table (string) – die Tabelle
id (int) – die zu löschende ID
ts (bytes optional) – wenn gesetzt, wird dieser Timestamp verwendet, sonst der aktuelle aus der DB
- delete() None ¶
Führt das delete aus. Evtl. wird dabei eine Exception geworfen. Dies ist eine Umbenennung von
exec()
.
- class PyAPplus64.applus_usexml.UseXmlRowInsert(applus: APplusServer, table: str)¶
Bases:
PyAPplus64.applus_usexml.UseXmlRow
Klasse, die eine XML-Datei für das Einfügen eines neuen Datensatzes erzeugen kann.
- Parameter
applus (APplusServer) – Verbindung zu APplus
table (string) – die Tabelle
- insert() int ¶
Führt das insert aus. Entweder wird dabei eine Exception geworfen oder die ID des neuen Eintrags zurückgegeben. Dies ist eine Umbenennung von
exec()
.
- class PyAPplus64.applus_usexml.UseXmlRowInsertOrUpdate(applus: APplusServer, table: str)¶
Bases:
PyAPplus64.applus_usexml.UseXmlRow
Klasse, die eine XML-Datei für das Einfügen oder Ändern eines neuen Datensatzes, erzeugen kann. Die Methode checkExists erlaubt es zu prüfen, ob ein Objekt bereits existiert. Dafür werden die gesetzten Felder mit den Feldern aus eindeutigen Indices verglichen. Existiert ein Objekt bereits, wird ein Update ausgeführt, ansonsten ein Insert. Bei Updates werden die Felder id und timestamp automatisch gesetzt.
- Parameter
applus (APplusServer) – Verbindung zu APplus
table (string) – die Tabelle
- checkExists() Optional[int] ¶
Prüft, ob der Datensatz bereits in der DB existiert. Ist dies der Fall, wird die ID geliefert, sonst None
- exec() int ¶
Führt entweder ein Update oder ein Insert durch. Dies hängt davon ab, ob das Objekt bereits in der DB existiert. In jedem Fall wird die ID des erzeugten oder geänderten Objekts geliefert.
- insert() int ¶
Führt ein Insert aus. Existiert das Objekt bereits, wird eine Exception geworfen.
- update(id: Optional[int] = None, ts: Optional[bytes] = None) int ¶
Führt ein Update aus. Falls ID oder Timestamp nicht übergeben werden, wird nach einem passenden Objekt gesucht. Existiert das Objekt nicht, wird eine Exception geworfen.
- class PyAPplus64.applus_usexml.UseXmlRowUpdate(applus: APplusServer, table: str, id: int, ts: Optional[bytes] = None)¶
Bases:
PyAPplus64.applus_usexml.UseXmlRow
Klasse, die eine XML-Datei für das Ändern eines neuen Datensatzes, erzeugen kann. Die Felder id und timestamp werden automatisch gesetzt.
- Parameter
applus (APplusServer) – Verbindung zu APplus
table (string) – die Tabelle
id (int) – die ID des zu ändernden Datensatzes
ts (bytes optional) – wenn gesetzt, wird dieser Timestamp verwendet, sonst der aktuelle aus der DB
- update() None ¶
Führt das update aus. Evtl. wird dabei eine Exception geworfen. Dies ist eine Umbenennung von
exec()
.
PyAPplus64.duplicate module¶
Dupliziert ein oder mehrere APplus Business-Objekte
- class PyAPplus64.duplicate.DuplicateBusinessObject(table: str, fields: Dict[str, Any], fieldsNotCopied: Dict[str, Any] = {}, allowUpdate: bool = False)¶
Bases:
object
Klasse, die alle Daten zu einem BusinessObject speichert und zum Duplizieren dieses Objektes dient. Dies beinhaltet Daten zu abhängigen Objekten sowie die Beziehung zu diesen Objekten. Zu einem Artikel wird z.B. der Arbeitsplan gespeichert, der wiederum Arbeitsplanpositionen enthält. Als Beziehung ist u.a. hinterlegt, dass das Feld „APLAN“ der Arbeitsplans dem Feld „ARTIKEL“ des Artikels entsprechen muss und dass „APLAN“ aus den Positionen, „APLAN“ aus dem APlan entsprichen muss. So kann beim Duplizieren ein anderer Name des Artikels gesetzt werden und automatisch die Felder der abhängigen Objekte angepasst werden. Einige Felder der Beziehung sind dabei statisch, d.h. können direkt aus den zu speichernden Daten abgelesen werden. Andere Felder sind dynamisch, d.h. das Parent-Objekt muss in der DB angelegt werden, damit ein solcher dynamischer Wert erstellt und geladen werden kann. Ein typisches Beispiel für ein dynamisches Feld ist „GUID“.
- addDependentBusinessObject(dObj: Optional[PyAPplus64.duplicate.DuplicateBusinessObject], *args: Tuple[str, str]) None ¶
Fügt ein neues Unterobjekt zum DuplicateBusinessObject hinzu. Dabei handelt es sich selbst um ein DuplicateBusinessObject, das zusammen mit dem Parent-Objekt dupliziert werden sollen. Zum Beispiel sollen zu einem Auftrag auch die Positionen dupliziert werden. Zusätzlich zum Objekt selbst können mehrere (keine, eine oder viele) Paare von Feldern übergeben werden. Ein Paar („pf“, „sf“) verbindet das Feld „pf“ des Parent-Objekts mit dem Feld „sf“ des Sub-Objekts. So ist es möglich, Werte des Parent-Objekts zu ändern und diese Änderungen für Sub-Objekte zu übernehmen. Üblicherweise muss zum Beispiel die Nummer des Hauptobjekts geändert werden. Die gleiche Änderung ist für alle abhängigen Objekte nötig, damit die neuen Objekte sich auf das Parent-Objekt beziehen.
- Parameter
dObj (DuplicateBusinessObject) – das Unter-Objekt
args – Liste von Tupeln, die Parent- und Sub-Objekt-Felder miteinander verbinden
- allowUpdate¶
Erlaube Updates statt Fehlern, wenn Objekt schon in DB existiert
- dependentObjs: List[Dict[str, Any]]¶
Abhängige Objekte
- fields¶
die Daten
- fieldsNotCopied¶
Datenfelder, die im Original vorhanden sind, aber nicht kopiert werden sollen
- getField(field: str, onlyCopied: bool = False) Any ¶
Schlägt den Wert eines Feldes nach. Wenn onlyCopied gesetzt ist, werden nur Felder zurückgeliefert, die auch kopiert werden sollen.
- insert(server: PyAPplus64.applus.APplusServer) PyAPplus64.applus_db.DBTableIDs ¶
Fügt alle Objekte zur DB hinzu. Es wird die Menge der IDs der erzeugten Objekte gruppiert nach Tabellen erzeugt. Falls ein Datensatz schon existiert, wird dieser entweder aktualisiert oder eine Fehlermeldung geworfen. Geliefert wird die Menge aller Eingefügten Objekte mit ihrer ID.
- setFields(upds: Dict[str, Any]) None ¶
Setzt Felder des DuplicateBusinessObjektes und falls nötig seiner Unterobjekte. So kann zum Beispiel die Nummer vor dem Speichern geändert werden.
- Parameter
upds – Dictionary mit zu setzenden Werten
- table¶
für welche Tabelle ist das BusinessObject
- class PyAPplus64.duplicate.FieldsToCopyForTableCache(server: PyAPplus64.applus.APplusServer)¶
Bases:
object
Cache für welche Felder für welche Tabelle kopiert werden sollen
- getFieldsToCopyForTable(table: str) Set[str] ¶
Bestimmt die für eine Tabelle zu kopierenden Spalten. Dazu wird in den XML-Definitionen geschaut. Ist dort ‚include‘ hinterlegt, werden diese Spalten verwendet. Ansonsten alle nicht generierten Spalten, ohne die ‚exclude‘ Spalten. In jedem Fall werden Spalten wie „ID“, die nie kopiert werden sollten, entfernt.
- PyAPplus64.duplicate.addSachgruppeDependentObjects(do: PyAPplus64.duplicate.DuplicateBusinessObject, server: PyAPplus64.applus.APplusServer, cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None) None ¶
Fügt Unterobjekte hinzu, die die Sachgruppenwerte kopieren.
- Parameter
do – zu erweiterndes DuplicateBusinessObject
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
- PyAPplus64.duplicate.getFieldsToCopyForTable(server: PyAPplus64.applus.APplusServer, table: str, force: bool = True) Set[str] ¶
Bestimmt die für eine Tabelle zu kopierenden Spalten. Dazu wird in den XML-Definitionen geschaut. Ist dort ‚include‘ hinterlegt, werden diese Spalten verwendet. Ansonsten alle nicht generierten Spalten, ohne die ‚exclude‘ Spalten. In jedem Fall werden Spalten wie „ID“, die nie kopiert werden sollten, entfernt.
- PyAPplus64.duplicate.initFieldsToCopyForTableCacheIfNeeded(server: PyAPplus64.applus.APplusServer, cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache]) PyAPplus64.duplicate.FieldsToCopyForTableCache ¶
Hilfsfunktion, die einen Cache erzeugt, falls dies noch nicht geschehen ist.
- PyAPplus64.duplicate.loadDBDuplicateAPlan(server: PyAPplus64.applus.APplusServer, aplan: str, cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None) Optional[PyAPplus64.duplicate.DuplicateBusinessObject] ¶
Erstelle DuplicateBusinessObject für einzelnen Arbeitsplan.
- Parameter
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
aplan (str) – Aplan, der kopiert werden soll.
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
- Rückgabe
das neue DuplicateBusinessObject
- Rückgabetyp
- PyAPplus64.duplicate.loadDBDuplicateArtikel(server: PyAPplus64.applus.APplusServer, artikel: str, cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None, dupAplan: bool = True, dupStueli: bool = True) Optional[PyAPplus64.duplicate.DuplicateBusinessObject] ¶
Erstelle DuplicateBusinessObject für einzelnen Artikel.
- Parameter
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
artikel (str) – Artikel, der kopiert werden soll
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
dupAplan (bool optional) – Arbeitsplan duplizieren?
dupStueli (bool optional) – Stückliste duplizieren?
- Rückgabe
das neue DuplicateBusinessObject
- Rückgabetyp
- PyAPplus64.duplicate.loadDBDuplicateBusinessObject(server: PyAPplus64.applus.APplusServer, table: str, cond: PyAPplus64.sql_utils.SqlCondition, cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None, allowUpdate: bool = False) Optional[PyAPplus64.duplicate.DuplicateBusinessObject] ¶
Läd ein einzelnes DuplicateBusinessObjekt aus der DB. Die Bedingung sollte dabei einen eindeutigen Datensatz auswählen. Werden mehrere zurückgeliefert, wird ein zufälliger ausgewählt. Wird kein Datensatz gefunden, wird None geliefert.
- Parameter
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
table (str) – Tabelle für das neue DuplicateBusinessObjekt
cond (sql_utils.SqlCondition) – SQL-Bedingung zur Auswahl eines Objektes
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
allowUpdate (bool) – ist Update statt Insert erlaubt?
- Rückgabe
das neue DuplicateBusinessObject
- Rückgabetyp
Optional[DuplicateBusinessObject]
- PyAPplus64.duplicate.loadDBDuplicateBusinessObjectSimpleCond(server: PyAPplus64.applus.APplusServer, table: str, field: str, value: Optional[Union[str, int, float, PyAPplus64.sql_utils.SqlParam, PyAPplus64.sql_utils.SqlField, PyAPplus64.sql_utils.SqlFixed, PyAPplus64.sql_utils.SqlDate, PyAPplus64.sql_utils.SqlDateTime, datetime.datetime, datetime.date, datetime.time, bool]], cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None, allowUpdate: bool = False) Optional[PyAPplus64.duplicate.DuplicateBusinessObject] ¶
Wrapper für loadDBDuplicateBusinessObject, das eine einfache Bedingung benutzt, bei der ein Feld einen bestimmten Wert haben muss.
- Parameter
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
table (str) – Tabelle für das neue DuplicateBusinessObjekt
field (str) – Feld für Bedingung
value – Wert des Feldes für Bedingung
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
- Rückgabe
das neue DuplicateBusinessObject
- Rückgabetyp
Optional[DuplicateBusinessObject]
- PyAPplus64.duplicate.loadDBDuplicateBusinessObjects(server: PyAPplus64.applus.APplusServer, table: str, cond: PyAPplus64.sql_utils.SqlCondition, cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None, allowUpdate: bool = False) Sequence[PyAPplus64.duplicate.DuplicateBusinessObject] ¶
Läd eine Liste von DuplicateBusinessObjekten aus der DB. Die Bedingung kann mehrere Datensätze auswählen.
- Parameter
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
table (str) – Tabelle für das neue DuplicateBusinessObjekt
cond (sql_utils.SqlCondition) – SQL-Bedingung zur Auswahl eines Objektes
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
- Rückgabe
Liste der neuen DuplicateBusinessObjects
- Rückgabetyp
Sequence[DuplicateBusinessObject]
- PyAPplus64.duplicate.loadDBDuplicateBusinessObjectsSimpleCond(server: PyAPplus64.applus.APplusServer, table: str, field: str, value: Optional[Union[str, int, float, PyAPplus64.sql_utils.SqlParam, PyAPplus64.sql_utils.SqlField, PyAPplus64.sql_utils.SqlFixed, PyAPplus64.sql_utils.SqlDate, PyAPplus64.sql_utils.SqlDateTime, datetime.datetime, datetime.date, datetime.time, bool]], cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None, allowUpdate: bool = False) Sequence[PyAPplus64.duplicate.DuplicateBusinessObject] ¶
Wrapper für loadDBDuplicateBusinessObjects, das eine einfache Bedingung benutzt, bei der ein Feld einen bestimmten Wert haben muss.
- Parameter
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
table (str) – Tabelle für das neue DuplicateBusinessObjekt
field – Feld für Bedingung
value – Wert des Feldes für Bedingung
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
- Rückgabe
Liste der neuen DuplicateBusinessObjects
- Rückgabetyp
Sequence[DuplicateBusinessObject]
- PyAPplus64.duplicate.loadDBDuplicateStueli(server: PyAPplus64.applus.APplusServer, stueli: str, cache: Optional[PyAPplus64.duplicate.FieldsToCopyForTableCache] = None) Optional[PyAPplus64.duplicate.DuplicateBusinessObject] ¶
Erstelle DuplicateBusinessObject für einzelne Stückliste.
- Parameter
server (APplusServer) – Verbindung zum APP-Server, benutzt zum Nachschlagen der zu kopierenden Felder
stueli (str) – Stückliste, die kopiert werden soll.
cache (Optional[FieldsToCopyForTableCache]) – Cache, so dass benötigte Felder nicht immer wieder neu berechnet werden müssen
- Rückgabe
das neue DuplicateBusinessObject
- Rückgabetyp
Optional[DuplicateBusinessObject]
- PyAPplus64.duplicate.noCopyFields = {'GUID', 'ID', 'ID_A', 'INSDATE', 'INSUSER', 'MANDANT', 'TIMESTAMP', 'TIMESTAMP_A', 'UPDDATE', 'UPDUSER'}¶
Menge von Feld-Namen, die nie kopiert werden sollen.
PyAPplus64.pandas module¶
Pandas Interface für PyAPplus64.
- PyAPplus64.pandas.createSqlAlchemyEngine(server: PyAPplus64.applus.APplusServer) sqlalchemy.engine.base.Engine ¶
Erzeugt eine SqlAlchemy-Engine für die Verbindung zur DB.
- PyAPplus64.pandas.exportToExcel(filename: Union[str, PathLike[str], pandas._typing.WriteExcelBuffer, pandas.io.excel._base.ExcelWriter], dfs: Sequence[Tuple[pandas.core.frame.DataFrame, str]], addTable: bool = True) None ¶
Schreibt eine Menge von Dataframes in eine Excel-Tabelle
- Parameter
filename – Name der Excel-Datei
dfs – Liste von Tupeln aus DataFrames und Namen von Sheets.
- PyAPplus64.pandas.mkDataframeColumn(df: pandas.core.frame.DataFrame, makeValue: Union[Callable, str, List[Union[Callable, str]], Dict[Hashable, Union[Callable, str, List[Union[Callable, str]]]]]) pandas.core.series.Series ¶
Erzeugt für alle Zeilen eines Dataframes eine neuen Wert. Dies wird benutzt, um eine Spalte zu berechnen. Diese kann eine Originalspalte ersetzen, oder neu hinzugefügt werden.
- Parameter
df – der Dataframe
makeValue – Funktion, die eine Zeile als Parameter bekommt und den neuen Wert berechnet
- PyAPplus64.pandas.mkHyperlinkDataframeColumn(df: pandas.core.frame.DataFrame, makeOrig: Union[Callable, str, List[Union[Callable, str]], Dict[Hashable, Union[Callable, str, List[Union[Callable, str]]]]], makeLink: Callable[[Any], str]) pandas.core.series.Series ¶
Erzeugt für alle Zeilen eines Dataframes einen Hyperlink. Dies wird benutzt, um eine Spalte mit einem Hyperlink zu berechnen. Diese kann eine Originalspalte ersetzen, oder neu hinzugefügt werden.
- Parameter
df – der Dataframe
makeOrig – Funktion, die eine Zeile als Parameter bekommt und den Wert berechnet, der angezeigt werden soll
makeLink – Funktion, die eine Zeile als Parameter bekommt und den Link berechnet
- PyAPplus64.pandas.pandasReadSql(server: PyAPplus64.applus.APplusServer, sql: Union[PyAPplus64.sql_utils.SqlStatementSelect, str], raw: bool = False, engine: Optional[sqlalchemy.engine.base.Engine] = None) pandas.core.frame.DataFrame ¶
Wrapper für pd.read_sql für sqlalchemy-engine.
- Parameter
server (APplusServer) – APplusServer für Datenbankverbindung und complete-SQL
sql – das SQL-statement
PyAPplus64.sql_utils module¶
Diese Datei enthält Funktionen für den Bau von SQL Statements, besonders SELECT-Statements. Es gibt viel ausgefeiltere Methoden für die Erstellung von SQL Statements. APplus benötigt jedoch die Statements als Strings, die dann an APplus für Änderungen und erst danach an die DB geschickt werden. Dies erschwert die Nutzung von Tools wie SqlAlchemy.
Hier werden einfache Hilfsfunktionen, die auf Strings basieren, zur Verfügung gestellt. PyODBC erlaubt Parameter (dargestellt als ‚?‘) in SQL Statements, die dann beim Aufruf gefüllt werden. Dies funktioniert auch im Zusammenspiel mit APplus. Oft ist es sinnvoll, solche Parameter zu verwenden.
- class PyAPplus64.sql_utils.SqlCondition¶
Bases:
object
Eine abstrakte Sql-Bedingung. Unterklassen erledigen die eigentliche Arbeit.
- getCondition() str ¶
Liefert die Bedingung als String
- Rückgabe
die Bedingung
- Rückgabetyp
str
- class PyAPplus64.sql_utils.SqlConditionAnd(*conds: Union[PyAPplus64.sql_utils.SqlCondition, str])¶
- class PyAPplus64.sql_utils.SqlConditionBinComp(op: str, value1: SqlValue, value2: SqlValue)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Bedingung der Form ‚value1 op value2‘
- Parameter
op (str) – der Vergleichsoperator
value1 (SqlValue) – der Wert, kann unterschiedliche Typen besitzen
value2 (SqlValue) – der Wert, kann unterschiedliche Typen besitzen
- class PyAPplus64.sql_utils.SqlConditionBool(b: bool)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Fixe True-oder-False Bedingung
- class PyAPplus64.sql_utils.SqlConditionDateTimeFieldInDay(field: str, year: int, month: int, day: int)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Liegt Datetime in einem bestimmten Monat?
- Parameter
field (str) – das Feld
year – das Jahr
month – der Monat
day – der Tag
- class PyAPplus64.sql_utils.SqlConditionDateTimeFieldInMonth(field: str, year: int, month: int)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Liegt Datetime in einem bestimmten Monat?
- Parameter
field (string) – das Feld
year – das Jahr
month – der Monat
- class PyAPplus64.sql_utils.SqlConditionDateTimeFieldInRange(field: str, datetimeVon: Optional[datetime.datetime], datetimeBis: Optional[datetime.datetime])¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Liegt Datetime in einem bestimmten Zeitraum?
- Parameter
field (str) – das Feld
datetimeVon – der untere Wert (einschließlich), None erlaubt beliebige Zeiten
datetimeBis – der obere Wert (ausschließlich), None erlaubt beliebige Zeiten
- class PyAPplus64.sql_utils.SqlConditionDateTimeFieldInYear(field: str, year: int)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Liegt Datetime in einem bestimmten Jahr?
- Parameter
field (str) – das Feld
year – das Jahr
- class PyAPplus64.sql_utils.SqlConditionEq(value1: Union[SqlValue, bool, None], value2: Union[SqlValue, bool, None])¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Bedingung der Form ‚v1 is null‘, ‚v2 is null‘, ‚v1 = v2‘, ‚(1=1)‘ oder ‚(0=1)‘
- Parameter
value1 – der Wert, kann unterschiedliche Typen besitzen
value2 – der Wert, kann unterschiedliche Typen besitzen
- class PyAPplus64.sql_utils.SqlConditionFalse¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
False-Bedingung
- class PyAPplus64.sql_utils.SqlConditionFieldIn¶
- class PyAPplus64.sql_utils.SqlConditionFieldIsNotNull(field: str)¶
- class PyAPplus64.sql_utils.SqlConditionFieldIsNull(field: str)¶
- class PyAPplus64.sql_utils.SqlConditionFieldStringNotEmpty(field: str)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Feld soll nicht den leeren String oder null enthalten. Der Ausdruck wird wörtlich übernommen.
- Parameter
field (str) – das Feld
- class PyAPplus64.sql_utils.SqlConditionGe(value1: SqlValue, value2: SqlValue)¶
Bases:
PyAPplus64.sql_utils.SqlConditionBinComp
Bedingung der Form ‚value1 >= value2‘
- Parameter
value1 – der Wert, kann unterschiedliche Typen besitzen
value2 – der Wert, kann unterschiedliche Typen besitzen
- class PyAPplus64.sql_utils.SqlConditionGt(value1: SqlValue, value2: SqlValue)¶
Bases:
PyAPplus64.sql_utils.SqlConditionBinComp
Bedingung der Form ‚value1 > value2‘
- Parameter
value1 – der Wert, kann unterschiedliche Typen besitzen
value2 – der Wert, kann unterschiedliche Typen besitzen
- class PyAPplus64.sql_utils.SqlConditionIn¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Bedingung der Form ‚v in …‘
- Parameter
value (SqlValue) – der Wert, kann unterschiedliche Typen besitzen
values (Sequence[SqlValue]) – die erlaubten Werte
- class PyAPplus64.sql_utils.SqlConditionIsNotNull(v: SqlValue)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Wert soll nicht null sein
- Parameter
v (SqlValue) – der Wert
- class PyAPplus64.sql_utils.SqlConditionIsNull(v: SqlValue)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Wert soll null sein
- Parameter
v (SqlValue) – das Feld
- class PyAPplus64.sql_utils.SqlConditionLe(value1: SqlValue, value2: SqlValue)¶
Bases:
PyAPplus64.sql_utils.SqlConditionBinComp
Bedingung der Form ‚value1 <= value2‘
- Parameter
value1 – der Wert, kann unterschiedliche Typen besitzen
value2 – der Wert, kann unterschiedliche Typen besitzen
- class PyAPplus64.sql_utils.SqlConditionList(connector: str, emptyCond: str)¶
Bases:
PyAPplus64.sql_utils.SqlCondition
Eine SQL Bedingung, die sich aus einer Liste anderer Bedingungen zusammensetzen. Dies kann eine „AND“ oder eine „OR“ Liste sein.
- Parameter
connector (str) – wie werden Listenelemente verbunden (AND oder OR)
emptyCond (str) – Rückgabewert für leere Liste
- addCondition(cond: Optional[Union[PyAPplus64.sql_utils.SqlCondition, str]]) None ¶
- addConditionFieldIn()¶
- addConditionFieldIsNotNull(field: str) None ¶
- addConditionFieldIsNull(field: str) None ¶
- addConditionFieldStringNotEmpty(field: str) None ¶
- addConditionFieldsEq(field1: str, field2: str) None ¶
- addConditionFieldsGe(field1: str, field2: str) None ¶
- addConditionFieldsGt(field1: str, field2: str) None ¶
- addConditionFieldsLe(field1: str, field2: str) None ¶
- addConditionFieldsLt(field1: str, field2: str) None ¶
- addConditions(*conds: Optional[Union[PyAPplus64.sql_utils.SqlCondition, str]]) None ¶
- getCondition() str ¶
Liefert die Bedingung als String
- Rückgabe
die Bedingung
- Rückgabetyp
str
- isEmpty() bool ¶
- class PyAPplus64.sql_utils.SqlConditionLt(value1: SqlValue, value2: SqlValue)¶
Bases:
PyAPplus64.sql_utils.SqlConditionBinComp
Bedingung der Form ‚value1 < value2‘
- Parameter
value1 – der Wert, kann unterschiedliche Typen besitzen
value2 – der Wert, kann unterschiedliche Typen besitzen
- class PyAPplus64.sql_utils.SqlConditionNot(cond: PyAPplus64.sql_utils.SqlCondition)¶
Bases:
PyAPplus64.sql_utils.SqlCondition
Negation einer anderen Bedingung
- Parameter
cond (SqlCondition) – die zu negierende Bedingung
- getCondition() str ¶
Liefert die Bedingung als String
- Rückgabe
die Bedingung
- Rückgabetyp
str
- class PyAPplus64.sql_utils.SqlConditionOr(*conds: Union[PyAPplus64.sql_utils.SqlCondition, str])¶
- class PyAPplus64.sql_utils.SqlConditionPrepared(cond: Union[PyAPplus64.sql_utils.SqlCondition, str])¶
Bases:
PyAPplus64.sql_utils.SqlCondition
Eine einfache Sql-Bedingung, die immer einen festen String zurückgibt.
- getCondition() str ¶
Liefert die Bedingung als String
- Rückgabe
die Bedingung
- Rückgabetyp
str
- class PyAPplus64.sql_utils.SqlConditionStringStartsWith(field: str, value: str)¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
Feld soll mit einem bestimmten String beginnen
- Parameter
field (str) – das Feld
value (str) – der Wert
- class PyAPplus64.sql_utils.SqlConditionTrue¶
Bases:
PyAPplus64.sql_utils.SqlConditionPrepared
True-Bedingung
- class PyAPplus64.sql_utils.SqlDate(d: Union[datetime.datetime, datetime.date] = datetime.datetime(2023, 11, 13, 12, 53, 12, 768288))¶
Bases:
object
Wrapper um DateTime, die die Formatierung erleichtern
- Parameter
d (Union[datetime.datetime, datetime.date]) – das Datum
- class PyAPplus64.sql_utils.SqlDateTime(dt: Union[datetime.datetime, datetime.date] = datetime.datetime(2023, 11, 13, 12, 53, 12, 768274))¶
Bases:
object
Wrapper um DateTime, die die Formatierung erleichtern
- Parameter
dt (Union[datetime.datetime, datetime.date]) – der Zeitpunkt
- class PyAPplus64.sql_utils.SqlField(fn: str)¶
Bases:
object
Wrapper um SQL Feldnamen, die die Formatierung erleichtern
- Parameter
fn (str) – der Feldname
- class PyAPplus64.sql_utils.SqlFixed(s: str)¶
Bases:
object
Wrapper um Strings, die ohne Änderung in SQL übernommen werden
- Parameter
s (str) – der string
- class PyAPplus64.sql_utils.SqlInnerJoin(table: str, *conds: Union[PyAPplus64.sql_utils.SqlCondition, str])¶
Bases:
PyAPplus64.sql_utils.SqlJoin
Ein Inner-Join.
- Parameter
table (str) – die Tabelle, die gejoint werden soll
conds – Bedingungen, die bereits hinzugefügt werden soll. Weitere können über Attribut on hinzugefügt werden.
- class PyAPplus64.sql_utils.SqlJoin(joinType: str, table: str, *conds: Union[PyAPplus64.sql_utils.SqlCondition, str])¶
Bases:
object
Ein abstrakter Sql-Join
- Parameter
joinType (str) – Art des Joins, wird in SQL übernommen, z.B. „LEFT JOIN“.
table (str) – die Tabelle, die gejoint werden soll
conds – Bedingungen, die bereits hinzugefügt werden soll. Weitere können über Attribut on hinzugefügt werden.
- getJoin() str ¶
Liefert den Join als String
- on: PyAPplus64.sql_utils.SqlConditionAnd¶
Bedingung des Joins, kann noch nachträglich erweitert werden
- class PyAPplus64.sql_utils.SqlLeftJoin(table: str, *conds: Union[PyAPplus64.sql_utils.SqlCondition, str])¶
Bases:
PyAPplus64.sql_utils.SqlJoin
Ein Left-Join.
- Parameter
table (str) – die Tabelle, die gejoint werden soll
conds – Bedingungen, die bereits hinzugefügt werden soll. Weitere können über Attribut on hinzugefügt werden.
- class PyAPplus64.sql_utils.SqlParam¶
Bases:
object
Hilfsklasse, für einen Parameter (?)
- class PyAPplus64.sql_utils.SqlStatementSelect(table: str, *fields: str)¶
Bases:
object
Klasse, um einfache Select-Statements zu bauen.
- Parameter
table (str) – die Haupt-Tabelle
fields – kein oder mehrere Felder, die selektiert werden sollen
- addFields(*fields: str) None ¶
Fügt ein oder mehrere Felder, also auszuwählende Werte zu einem SQL-Statement hinzu.
- addFieldsTable(table: str, *fields: str) None ¶
Fügt ein oder mehrere Felder, die zu einer Tabelle gehören zu einem SQL-Statement hinzu. Felder sind Strings. Vor jeden dieser Strings wird die Tabelle mit einem Punkt getrennt gesetzt. Dies kann im Vergleich zu ‚addFields‘ Schreibarbeit erleitern.
- addGroupBy(*fields: str) None ¶
Fügt ein oder mehrere GroupBy Felder zu einem SQL-Statement hinzu.
- addInnerJoin(table: str, *conds: Union[PyAPplus64.sql_utils.SqlCondition, str]) PyAPplus64.sql_utils.SqlInnerJoin ¶
- addJoin(j: Union[PyAPplus64.sql_utils.SqlJoin, str]) None ¶
Fügt ein Join zum SQL-Statement hinzu. Beispiel: ‚LEFT JOIN personal p ON t.UPDUSER = p.PERSONAL‘
- addLeftJoin(table: str, *conds: Union[PyAPplus64.sql_utils.SqlCondition, str]) PyAPplus64.sql_utils.SqlLeftJoin ¶
- fields: List[str]¶
Liste von auszuwählenden Feldern
- getSql() str ¶
Liefert das SQL-SELECT-Statement als String
- groupBy: List[str]¶
die Bedingung, Default ist True
- having: PyAPplus64.sql_utils.SqlConditionList¶
die Bedingung having, Default ist True
- joins: List[Union[PyAPplus64.sql_utils.SqlJoin, str]]¶
Joins mit extra Tabellen
- order: Optional[str]¶
Sortierung
- setTop(t: int) None ¶
Wie viele Datensätze sollen maximal zurückgeliefert werden? 0 für alle
- table: str¶
die Tabelle
- top: int¶
wie viele Datensätze auswählen? 0 für alle
- where: PyAPplus64.sql_utils.SqlConditionList¶
die Bedingung, Default ist True
- class PyAPplus64.sql_utils.SqlTime(t: Union[datetime.datetime, datetime.time] = datetime.datetime(2023, 11, 13, 12, 53, 12, 768295))¶
Bases:
object
Wrapper um DateTime, die die Formatierung erleichtern
- Parameter
t (Union[datetime.datetime, datetime.time]) – die Zeit
- PyAPplus64.sql_utils.SqlValue¶
Union-Type aller unterstützter SQL-Werte
alias of
Union
[str
,int
,float
,PyAPplus64.sql_utils.SqlParam
,PyAPplus64.sql_utils.SqlField
,PyAPplus64.sql_utils.SqlFixed
,PyAPplus64.sql_utils.SqlDate
,PyAPplus64.sql_utils.SqlDateTime
,datetime.datetime
,datetime.date
,datetime.time
]
- PyAPplus64.sql_utils.formatSqlValue(v: SqlValue) str ¶
Formatiert einen Wert für SQL. Je nachdem um welchen Typ es sich handelt, werden andere Formatierungen verwendet.
- Parameter
v (SqlValue) – der Wert
- Rückgabe
der formatierte Wert
- Rückgabetyp
str
- PyAPplus64.sql_utils.formatSqlValueString(s: str) str ¶
Formatiert einen String für ein Sql-Statement. Der String wird in „‘“ eingeschlossen und Hochkomma im Text maskiert.
- Parameter
s (str) – der String
- Rückgabe
der formatierte String
- Rückgabetyp
str
- PyAPplus64.sql_utils.normaliseDBfield(f: str) str ¶
Normalisiert die Darstellung eines DB-Feldes
- PyAPplus64.sql_utils.normaliseDBfieldList(fields: Sequence[str]) Sequence[str] ¶
Normalisiert eine Menge von DB-Feldern
- PyAPplus64.sql_utils.normaliseDBfieldSet(s: Set[str]) Set[str] ¶
Normalisiert eine Menge von DB-Feldern
- PyAPplus64.sql_utils.sqlParam = <PyAPplus64.sql_utils.SqlParam object>¶
Da SqlParam keinen Zustand hat, reicht ein einzelner statischer Wert
PyAPplus64.utils module¶
- PyAPplus64.utils.checkDirExists(dir: Union[str, pathlib.Path]) pathlib.Path ¶
Prüft, ob ein Verzeichnis existiert. Ist dies nicht möglich, wird eine Exception geworfen.
- Parameter
dir (Union[str, pathlib.Path]) – das Verzeichnis
- Rückgabe
den normalisierten Pfad
- Rückgabetyp
pathlib.Path
- PyAPplus64.utils.containsOnlyAllowedChars(charset: Set[str], s: str) bool ¶
Enthält ein String nur erlaubte Zeichen?
- PyAPplus64.utils.formatDateTimeForAPplus(v: Union[datetime.datetime, datetime.date, datetime.time]) str ¶
Formatiert ein Datum oder eine Uhrzeit für APplus