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