OVH Cloud OVH Cloud

Python et Firebird embarqué

23 réponses
Avatar
Bogdahn
Bonjour,

J'ai dans l'idee de developper une petite application de gestion en
python. Il y a 12 tables pour l'instant et je comptais utiliser Sqlite
que je trouve tres sympa et qui je trouve s'accorde bien avec python,
mais sqlite ne gere pas les FK, faut les coder en trigger, c'est type
less etc, donc j'ai fini par lacher l'affaire et me tourner vers
firebird (pour ceux qui ne connaissent pas trop c'est un SGBD basé sur
Interbase 6 opensource de borland), le SGBD en lui même répond a toutes
mes attentes et meme plus...
En utilisant un sgbd client serveur je perdais l'interet du fichier
unique sqlite et de son architecture non C/S, ce que je trouvais
parfait pour ma petite appli dont la base de donnée ne sera pas
attaquée par plusieures personnes. Firebird propose une version
Desktop, c'est a dire un fichier unique piloté par une DLL (à la sqlite
donc), c'est donc avec interet que je me suis tourné vers cette
solution pour l'environnement windows (partant du fait que les
utilisateurs winwin n'aiment pas trop avoir à installer un serveur, que
c'est disproportionné etc et que les utilisateurs unix ont des chance
d'avoir une base de donnée déja installé et peut etre meme Firebird
justement).

Là je me heurte a un probleme : les dev python qui attaquent le sgbd
desktop firebird, j'en ai pas trouvé :)

Je pense que pour les utilisateurs linux de mon application, ca ne
devrait pas trop poser de probleme, je leur laisse la possiblité de
configurer eux meme leur sgbd et ca roule en utilisant Python Database
API, par contre je ne sais pas trop comment faire pour utiliser la
version desktop de firebird sous windows, donc je cherche des retours
d'expérience.

Si vous avez une solution pour faire un truc unique pour les deux
cibles (windows et unices) je suis intéréssé, par contre il faut que ca
reste sur un modele relationnel.

Ma question est donc : comment attaquer firebird desktop avec python
sans partir dans du win32.

Merci :)

10 réponses

1 2 3
Avatar
MCI, Shadok Gouroudoudou
Re !

Je suis tout à fait d'accord avec toi. Les habitudes de développements
contiennent des gains de productivité immédiats, alors qu'apprendre (et
intégrer) de nouvelles façons de faire nécessite d'avoir du temps
devant soi.

Un autre aspect, que tu n'as pas cité, mais qui peux jouer, c'est que
tu en profiteras pour maîtriser firebird (desktop), ce qui te
resservira sans doute plus tard.








--
@-salutations

Michel Claveau
Avatar
Bogdahn
Bonsoir !

Une appli avec seulement une douzaine de tables a-t'elle besoin d'un vrai
SGBD ?

Pour ce genre de "petite appli" (je te cite), il ne doit pas y avoir plus de
quelques milliers d'enregistrements.

Du coup, tu pourrais envisager de gérer ça dans une structure de
dictionnaires.

Pierre Quentel, qui passe par ici de temps à autre, avait d'ailleurs réalisé
une classe pour gérer ce genre de choses.
Certes, il n'y a pas de SQL, mais il utilise les listes en intention pour
effectuer des requêtes.
Ce petit module pourrait servir de base (je crois que son nom était PyDBlite,
ou qq chose comme ça).


Je sais que le fait d'utiliser un sgbd pour une petite application est
tres souvent taxé de gabegie, surtout par les gens qui ont l'habitude
d'utiliser des plains files ou autre pour le stockage des données.
C'est un tres tres vieux débat...

Je bosse dans la gestion, pour moi c'est bien plus familier
d'interroger une vue d'un sgbd que de me balader dans un arbre xml,
c'est pour ca que je me tourne naturellement vers les sgbd, c'est plus
simple pour moi. Si un sgbd qui me prend 1.5Mo m'evite de coder les
intégrités, me fait des jointures, je cherche pas a comprendre, j'ai
bien plus confiance dans un sgbd que dans mon code, et ca me prendra
bien moins de temps a mettre en oeuvre.

Je sais, je suis pas courageux, mais je cherche la facilité :)
Donc je reste sur mon sgbd (pour rappel, j'ai abandonné sqlite parce
que je voulais pas me taper les triggers à la main, si c'est pour me
pogner les intégrité...)

Par contre, je mets de coté le module dont tu parles, qui semble tres
interessant en effet, ca me sera surement utile plus tard, pour
d'autres projets :)

Merci pour ton aide.

Avatar
Mihamina (R12y) Rakotomandimby
Bogdahn - :

Si vous avez une solution pour faire un truc unique pour les deux
cibles (windows et unices) je suis intéréssé, par contre il faut que ca
reste sur un modele relationnel.


Je sais pas si ça fait tout ce que tu veux, mais:
http://www.wellho.net/forum/Programming-in-Python-and-Ruby/Python-and-SQL-the-DB-API-and-Gadfly.html
http://gadfly.sourceforge.net/gadfly.html
...

Avatar
Bogdahn
Re !

Je suis tout à fait d'accord avec toi. Les habitudes de développements
contiennent des gains de productivité immédiats, alors qu'apprendre (et
intégrer) de nouvelles façons de faire nécessite d'avoir du temps devant soi.

Un autre aspect, que tu n'as pas cité, mais qui peux jouer, c'est que tu en
profiteras pour maîtriser firebird (desktop), ce qui te resservira sans doute
plus tard.


Oui tout a fait. Notes cependant que je n'ai pas l'intention de rester
dans mon domaine sgbd toute ma vie sans evoluer et decouvrir d'autres
référenciels, j'ai l'intention de le faire mais chaque chose en son
temps :)

Avatar
Bogdahn
Bogdahn - :

Si vous avez une solution pour faire un truc unique pour les deux
cibles (windows et unices) je suis intéréssé, par contre il faut que ca
reste sur un modele relationnel.


Je sais pas si ça fait tout ce que tu veux, mais:
http://www.wellho.net/forum/Programming-in-Python-and-Ruby/Python-and-SQL-the-DB-API-and-Gadfly.html
http://gadfly.sourceforge.net/gadfly.html
...


Ah oui gadfly ! Je sais pas pourquoi j'avais zapé ca, faudrait que je
regarde si ca correspond bien a mes attentes.

Pour l'instant je vais rester sur mon idee de firebird (pas parce que
c'est mieux, mais parce que c'est mon envie de base) mais si ca donne
rien gadfly pourrait peut etre etre la solution :) Ca répond
éffectivement parfaitement au besoin de portabilité.

Merci pour cette suggestion.


Avatar
m.banaouas
http://kinterbasdb.sourceforge.net/
je l'utilise sans pb depuis plusieurs années dans diverses appli python

extrait:

Introduction
KInterbasDB is a Python extension package that implements Python
Database API 2.0-compliant support for the open source relational
database Firebird and some versions of its proprietary cousin Borland®
Interbase®. In addition to the minimal feature set of the standard
Python DB API, KInterbasDB also exposes nearly the entire native client
API of the database engine.

The package is free--covered by a permissive BSD-style license that both
commercial and noncommercial users should find agreeable.




Bonjour,

J'ai dans l'idee de developper une petite application de gestion en
python. Il y a 12 tables pour l'instant et je comptais utiliser Sqlite
que je trouve tres sympa et qui je trouve s'accorde bien avec python,
mais sqlite ne gere pas les FK, faut les coder en trigger, c'est type
less etc, donc j'ai fini par lacher l'affaire et me tourner vers
firebird (pour ceux qui ne connaissent pas trop c'est un SGBD basé sur
Interbase 6 opensource de borland), le SGBD en lui même répond a toutes
mes attentes et meme plus...
En utilisant un sgbd client serveur je perdais l'interet du fichier
unique sqlite et de son architecture non C/S, ce que je trouvais parfait
pour ma petite appli dont la base de donnée ne sera pas attaquée par
plusieures personnes. Firebird propose une version Desktop, c'est a dire
un fichier unique piloté par une DLL (à la sqlite donc), c'est donc avec
interet que je me suis tourné vers cette solution pour l'environnement
windows (partant du fait que les utilisateurs winwin n'aiment pas trop
avoir à installer un serveur, que c'est disproportionné etc et que les
utilisateurs unix ont des chance d'avoir une base de donnée déja
installé et peut etre meme Firebird justement).

Là je me heurte a un probleme : les dev python qui attaquent le sgbd
desktop firebird, j'en ai pas trouvé :)

Je pense que pour les utilisateurs linux de mon application, ca ne
devrait pas trop poser de probleme, je leur laisse la possiblité de
configurer eux meme leur sgbd et ca roule en utilisant Python Database
API, par contre je ne sais pas trop comment faire pour utiliser la
version desktop de firebird sous windows, donc je cherche des retours
d'expérience.

Si vous avez une solution pour faire un truc unique pour les deux cibles
(windows et unices) je suis intéréssé, par contre il faut que ca reste
sur un modele relationnel.

Ma question est donc : comment attaquer firebird desktop avec python
sans partir dans du win32.

Merci :)




Avatar
Philippe Makowski
Là je me heurte a un probleme : les dev python qui attaquent le sgbd desktop
firebird, j'en ai pas trouvé :)

tu n'as pas du chercher beaucoup ;)


http://kinterbasdb.sourceforge.net/

et c'est réglé
d'ailleurs, les tests de qualité avant livraison de Firebird sont fait
avec Python et kinterbasdb

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html

Avatar
Laurent Pointal
MCI, Shadok Gouroudoudou wrote:

Pierre Quentel, qui passe par ici de temps à autre, avait d'ailleurs
réalisé une classe pour gérer ce genre de choses.
Certes, il n'y a pas de SQL, mais il utilise les listes en intention
pour effectuer des requêtes.
Ce petit module pourrait servir de base (je crois que son nom était
PyDBlite, ou qq chose comme ça).


buzhug

http://buzhug.sourceforge.net/

Mais je crois qu'il n'a pas prévu de le developper plus avany.

Avatar
hg
MCI, Shadok Gouroudoudou wrote:

'soir !


avany ... et framboise



Je n'avais pas osé cette Lapointe d'humour...




--
@-salutations

Michel Claveau



Comme diraient les flics de l'autre côté du tunnel ... c'est "bobyesque"

hg



Avatar
Laurent Pointal
Laurent Pointal wrote:

Mais je crois qu'il n'a pas prévu de le developper plus avany.


... et framboise bien entendu.

1 2 3