ORMithorynque est un ORM (Object Relational Mapper), c'est-à-dire une base de données objet construite par dessus une base de données relationnelles (SQLite3). ORMithorynque permet d'enregistrer et de charger des objets Python dans une base de données, et d'effectuer des requêtes complexes et optimisées en SQL. ORMithorynque peut être vu comme SQLite3 avec des objets et de l'héritage multiple, ou comme le système objet de Python enrichi avec des requêtes SQL.
Les principaux points forts d'ORMithorynque sont :
d'excellentes performances grâce à des requêtes pré-construites et des techniques de caches agressives (plus rapide que SQLAlchemy, SQLObject, Pony et Peewee, voir le Benchmark)
la mise à jour automatique du schéma de la base de données lors de l'ajout de tables, colonnes ou index
le support de l'héritage multiple
les transactions
le requêtage en SQL
un nom amusant :)
Et les points faibles :
supporte un seul format de base de données relationnelle (SQLite3)
pas de langage de requête spécifique de haut niveau
pas de support multithread
ORMithorynque est disponible sous licence GNU LGPL v3. Il nécessite Python 3.2 (ou supérieur) ou Pypy 3.
Installation
Pour installer ORMithorynque, tapez la ligne de commande suivante (en root):
pip install ormithorynque
Que peut-on faire avec ORMithorynque?
Ouvrir une base de données ORMithorynque à partir d'un fichier (si la base n'existe pas, elle est créée automatiquement):
>>> import ormithorynque >>> database = ormithorynque.Database("fichier_base_de_données.sqlite3")
Créer des classes, ici avec une relation 1-* entre elles (les tables sont automatiquement créées avec les classes si elles n'existent pas, et mises à jour avec les nouvelles colonnes éventuelles dans le cas contraire):
>>> class Personne(database.Object): ... nom = database.SQLAttribute(str, indexed = True) ... prenom = database.SQLAttribute(str) ... maisons = database.SQLOneToMany("Maison", "proprietaire") >>> class Maison(database.Object): ... addresse = database.SQLAttribute("Nulle part") # Attribute chaîne de caractères avec une valeur par défaut ... proprietaire = database.SQLAttribute(object)
Créer deux instances (la base de données est automatiquement mise à jour):
>>> quelquun = Personne(nom = "Quel", prenom = "Qu'un") >>> maison = Maison(addresse = "Quelque part", proprietaire = quelquun)
Les attributs des instances peuvent être accédés et modifiés (la base de données est automatiquement mise à jour):
>>> quelquun.nom Quel >>> quelquun.nom = "Quel2" >>> quelquun.maisons [<Maison id=2 addresse='Quelque part' proprietaire=<Person id=1 nom='Quel2' prenom="Qu'un">>]
Enfin, la base peut être requêtée en SQL:
>>> database.select_one("select count(id) from Personne") (1,)
Liens
ORMithorynque sur BitBucket (développement): https://bitbucket.org/jibalamy/ormithorynque
ORMithorynque sur PyPI (Python Package Index, version stable): https://pypi.python.org/pypi/ORMithorynque
Documentation: http://pythonhosted.org/ORMithorynque
ORMithorynque 0.1.1 est disponible !
ORMithorynque est un module d'ORM pour Python (base de données objet).
ORMithorynque 0.1.1 est disponible et peut être télécharger sur PyPI (Python Package Index) : https://pypi.python.org/pypi/ORMithorynque