No project description provided
Project description
Easyfatt - Python
Questo pacchetto fornisce diversi strumenti per semplificare lo sviluppo di automazioni in Python per l'applicativo gestionale "Danea Easyfatt".
Funzioni
- Lettura file
.DefXmlesportati da Easyfatt (ordini cliente, vendite banco, preventivi, ecc..) - Download driver firebird (necessario per la connessione al DB di Easyfatt)
- Connessione al database di Easyfatt
Utilizzo
File .DefXml
Il modulo easyfatt_db_connector.xml espone la classe EasyfattXML e la funzione read_xml (una funzione "utility" che restituisce un'istanza di EasyfattXML).
Sia i metodi EasyfattXML.from_xml*() che la funzione read_xml() accettano il parametro convert_types (di default impostato a True) che permette di convertire i valori dei tag in tipi Python nativi (es. int, float, bool, ecc..). Se disabilitato i valori dei tag saranno sempre stringhe o None.
Esempio
In questo esempio lo script leggerà l'esportazione di una serie di ordini cliente e stamperà a schermo l'indirizzo di spedizione di ogni documento:
from pathlib import Path
from easyfatt_db_connector.xml import read_xml
xml_file = Path("OrdiniCliente.DefXml").expanduser()
# Questa istruzione...
xml_object = read_xml(xml_file, convert_types=True)
# ... si può scrivere anche così
xml_object = EasyfattXML.from_xml_string(xml_file.read_bytes(), convert_types=True)
for doc in xml_object.documents:
print(f"Document n°{doc.number}{doc.numbering} will be shipped at '{doc.delivery.address}'")
L'output sarà il seguente:
Document n°1 will be shipped at ''
Document n°2 will be shipped at ''
Document n°3 will be shipped at ''
Document n°1/A will be shipped at ''
Document n°2/A will be shipped at ''
Document n°4 will be shipped at ''
Document n°5 will be shipped at ''
Document n°6 will be shipped at 'Via Facciolati, 546'
Document n°3/A will be shipped at 'Via Catania, sn'
Document n°7 will be shipped at ''
Document n°8 will be shipped at 'Via Rodolfo Manganaro'
Document n°9 will be shipped at 'Via Enrico Berlinguer,75'
Document n°10 will be shipped at ''
Document n°11 will be shipped at 'Via C. Colombo, 632'
Document n°12 will be shipped at ''
Document n°13 will be shipped at ''
Document n°1/B will be shipped at ''
Document n°14 will be shipped at 'Via G. Di Vittorio, 56'
Document n°15 will be shipped at 'Via Cavour, 152'
Document n°16 will be shipped at 'Via N.S. degli Angeli, 28'
Database: download driver Firebird (prerequisito)
Per connettersi al DB di Easyfatt è necessario scaricare il driver Firebird Firebird-{version}-embed.zip (versione 2.5.8 o 2.5.9) e specificarne il percorso.
from easyfatt_db_connector.core.connection import EasyfattFDB
database = EasyfattFDB(archive_path=database_path, firebird_path="./firebird-driver")
Questa procedura può essere automatizzata impostando il parametro download_firebird a True (di default è False). E' possibile controllare il percorso di download del driver tramite il parametro firebird_path (di default ~/.cache/firebird-driver/).
from easyfatt_db_connector import EasyfattFDB
database = EasyfattFDB(archive_path=database_path, download_firebird=True)
ATTENZIONE
L'opzione
download_firebirdè impostata di default aFalseper evitare che il programma effettui download in ambienti di Produzione.Se questo è il comportamento desiderato impostare il parametro a
True.
Database: connessione e query
In fase di connessione al DB l'istanza EasyfattFDB provvederà a fare una copia del database in una cartella temporanea (ed alla sua eliminazione ad operazioni terminate) così da permettere l'utilizzo anche con Easyfatt in esecuzione.
from easyfatt_db_connector.core.connection import EasyfattFDB
database = EasyfattFDB(archive_path=database_path, download_firebird=True)
with database.connect() as connection:
customers = [dict(item) for item in connection.cursor().execute('''
SELECT anag."CodAnagr", ANAG."Nome", ANAG."Indirizzo", ANAG."Cap", ANAG."Citta", ANAG."Prov", ANAG."Regione", IIF(naz."NomeNazionePrint" IS NULL, 'Italia', naz."NomeNazionePrint") AS Nazione
FROM "TAnagrafica" AS anag
LEFT JOIN "TNazioni" naz ON ANAG."Nazione" = naz."NomeNazione";
''').fetchallmap()]
print(customers)
Development
Note per Windows
Build con PyInstaller
In fase di build con PyInstaller (sia in modalità --onefile che --onedir) è necessario tenere in considerazione le seguenti note:
- Non usare mai UPX se disponibile (a causa di un bug che porta la DLL
fbclient.dlla crashare in modo randomico impedendo la connessione al DB). Se possibile includere sempre--noupxtra gli argomenti di build. - Aggiungere
--collect-all sqlalchemy_firebirdtra gli argomenti di build per evitare che PyInstaller non includa il modulofdbefirebird-driver(che non vengono rilevato automaticamente).
Python
poetry config virtualenvs.prefer-active-python true
poetry env use $(pyenv which python)
Database
- Installare Firebird SQL 2.5.9 (selezionare la versione "64-bit Classic, Superclassic & Superserver")
- Assicurarsi di selezionare "Run as service"
Per controllare l'avvenuta installazione:
- Aprire un terminale Powershell nella cartella di installzione (nel mio caso
C:\Program Files\Firebird\Firebird_2_5) - Lanciare il comando
cd bin - Lanciare il comando
./isql.exe "{PERCORSO_DATABASE}\{NOME_DATABASE}.eft" -u sysdba -p masterkey - Ora è possibile eseguire query SQL (assicurandosi che finiscano SEMPRE con
;)
Database tool
-
Installare ed aprire DBeaver:
-
Cliccare su "File > Nuovo":
-
Cliccare su "DBeaver > Connessione a Database" e cliccare "Avanti":
-
Nel campo di ricerca scrivere "Firebird", selezionare il primo risultato e cliccare "Avanti":
-
Compilare i dati richiesti:
- Generale:
- Host:
localhost(default) - Porta:
3050(default) - Percorso: adeguare alla posizione del database nel proprio sistema
- Host:
- Autenticazione:
- Nome utente:
SYSDBA(default) - Password:
masterkey
- Nome utente:
- Generale:
-
Terminare la configurazione del driver cliccando su "Fine"
Alcune note
-
Assicurarsi che sia visibile almeno la finestra "Navigatore Database":
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easyfatt_db_connector-0.3.2.tar.gz.
File metadata
- Download URL: easyfatt_db_connector-0.3.2.tar.gz
- Upload date:
- Size: 38.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.0 CPython/3.9.6 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
006d1c054fa0938d3b2efd8499767b5fec76a035bd96b01dc5ad41e17cd9a489
|
|
| MD5 |
764f42059cbd4f63e8a73276278b24c4
|
|
| BLAKE2b-256 |
a1bd6c030be8b46c2c4db1c49b93d9bddd2d88161860780686b85cd68b437fcf
|
File details
Details for the file easyfatt_db_connector-0.3.2-py3-none-any.whl.
File metadata
- Download URL: easyfatt_db_connector-0.3.2-py3-none-any.whl
- Upload date:
- Size: 44.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.0 CPython/3.9.6 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f26705d954825a825495f6eb9804023650be252b76d91225b8ec96e75c28be3
|
|
| MD5 |
ed1d288cbcbd4e0327a1da1fd07be13d
|
|
| BLAKE2b-256 |
3015ecde8b5853ab94165bcbaf190d1c62d42ba7ba879c7dbda0d47634b6940b
|