LukeSavefrogs / easyfatt-db-connector

MIT License
5 stars 0 forks source link

which firebird driver in a linux environment? #8

Open masavini opened 10 months ago

masavini commented 10 months ago

hi, which firebird driver version should i download to use this library in a linux environment? thanks!

LukeSavefrogs commented 10 months ago

Why do you need to run the code in a Linux environment?

Note that this package is meant to be used in a Windows environment.

However, if you really need the code to run in a Linux OS you can install the Firebird SuperServer similarly to how it is documented for Windows. Then you should NEVER use download_driver=True while connecting to the database (default is False to keep it safe in these kind of situations).

Tell me if there is anything you don't understand or you need help

P.S. Se leggi questo e sei italiano sentiti libero di rispondere in italiano. Essendo Easyfatt un prodotto dedicato ad un pubblico italiano, ho strutturato il progetto in modo che la documentazione sia in italiano.

masavini commented 10 months ago

ciao, grazie per la risposta.

la mia conoscenza di windows è molto limitata, quindi pensavo di far girare il mio programma (sviluppato su linux) per l'importazione dei listini fornitori in una macchina virtuale o in un container docker.

nella pagina dei download di firebird ho visto che la versione linux contiene anche il driver embedded, ma non sono riuscito a farlo funzionare con la tua libreria.

accetto consigli: pensi sia più semplice fare il deployment di un'applicazione python su windows o usare un ambiente linux virtualizzato facendo funzionare il driver firebird per linux?

grazie!

LukeSavefrogs commented 10 months ago

pensi sia più semplice fare il deployment di un'applicazione python su windows o usare un ambiente linux virtualizzato facendo funzionare il driver firebird per linux?

Se non ho capito male la tua intenzione era di far girare un sistema Linux virtualizzato sulla stessa macchina fisica su cui è presente il database Danea Easyfatt e mettere a disposizione della virtual machine il DB tramite bind mount (docker) o semplicemente una cartella condivisa nella rete locale...

Se questo fosse il caso ti consiglierei assolutamente di far girare il tuo progetto Python direttamente sul server Windows in quanto vai ad abbattere il divario prestazionale e riduci di molto le procedure necessarie per farlo funzionare, oltre a ridurre il numero di passaggi e quindi il rischio che qualcosa vada storto. A titolo d'esempio credo ti possa tornare utile quest'altro mio progetto (di cui easyfatt-db-connector è una delle dipendenze principali) che consiste in un eseguibile .exe che, tramite codice Python contenuto all'interno, va ad automatizzare alcune procedure effettuate sugli ordini cliente.

In alternativa se dovessi usare una macchina separata Linux (con le risorse indipendenti da quella Windows) potresti valutare di installare lì i binari di Firebird e usare una cartella condivisa in rete per accedere al DB.

Personalmente ti consiglio la 1 strada in quanto è quella che ho seguito io stesso (e che mi ha portato alla creazione di questo pacchetto) e di cui posso certificare il funzionamento 😃

LukeSavefrogs commented 10 months ago

pensavo di far girare il mio programma (sviluppato su linux) per l'importazione dei listini fornitori in una macchina virtuale o in un container docker

Come detto nella risposta precedente ti sconsiglio di usare una VM (sia essa "vera" o Docker) sulla stessa macchina Windows su cui si trova il DB di Easyfatt per un motivo molto semplice: queste condivideranno le stesse risorse, il che potrebbe portarle (pensiamo sempre al peggio) a consumarsi le risorse (memoria, spazio e CPU) a vicenda, portando ad un rallentamento se non addirittura ad un fermo di uno o entrambi i sistemi!

Diversa è la faccenda invece nel caso siano macchine distinte, dove questo problema non sussiste.

LukeSavefrogs commented 10 months ago

nella pagina dei download di firebird ho visto che la versione linux contiene anche il driver embedded, ma non sono riuscito a farlo funzionare con la tua libreria.

Effettivamente hai ragione, ho visto che nella pagina dei download il pacchetto Linux contiene ANCHE la versione embedded all'interno (come specificato in questa wiki).

Dalla documentazione ufficiale però leggo questo:

For at least Firebird 2.5+: Do not specify a username or password as that will force a lookup to security.fdb which may fail if system-wide security.fdb cannot be accessed. Do specify the role RDB$ADMIN on Firebird 2.5+ as that should give you full control over the database file.

Sarebbero da fare diverse modifiche alla libreria per poter usarla su altri sistemi SENZA usare Firebird Embedded... Ho aperto l'issue #10 in modo da permettere in futuro di usare un'istanza esistente di un DB Firebird😄