La réponse courte est: non, vous ne pouvez pas utiliser l'ORM de Django séparément de Django.
La réponse est: oui, vous pouvez, si vous êtes disposé à charger de grandes parties de Django avec elle. Par exemple, la connexion de base de données qui est utilisé par Django est ouverte lorsqu'une demande de Django se produit. Cela se produit lorsqu'un signal est envoyé afin que vous peut manifestement envoyer ce signal pour ouvrir la connexion sans l'aide de la spécificité de la demande mécanisme. Aussi, vous aurez besoin pour l'installation de diverses applications et les paramètres pour le projet Django.
En fin de compte, il n'est sans doute pas utile de votre temps. SQL Alchimie est relativement bien connue Python ORM, qui est en fait plus puissant que de Django reinhardt, de toute façon, car il prend en charge plusieurs connexions de base de données de connexion et de mise en commun et d'autres bonnes choses.
Edit: en réponse à James critiques ailleurs, je vais préciser ce que j'ai décrit dans mon premier post. Alors qu'il est réjouissant de constater que l'un des principaux Django contributeur m'a appelé, je pense toujours que je suis de droite :)
Tout d'abord, pensez à ce qui doit être fait pour utiliser l'ORM de Django distincte de toute autre partie. Vous utilisez l'une des méthodes décrites par James pour faire une installation de base de Django. Mais un certain nombre de ces méthodes ne permettent pas à l'aide de l' syncdb
de commande, ce qui est nécessaire pour créer les tables pour vos modèles. Un settings.py fichier est nécessaire pour cela, avec des variables non seulement pour DATABASE_*
, mais aussi INSTALLED_APPLICATIONS
avec les bons chemins à tous models.py les fichiers.
Il est possible de faire votre propre solution pour utiliser syncdb
sans settings.py mais il nécessite des connaissances approfondies de Django. Bien sûr, vous n'avez pas besoin d'utiliser syncdb
; les tableaux peuvent être créés de façon indépendante des modèles. Mais il est un aspect de l'ORM qui n'est disponible que si vous mettez un peu d'effort dans le programme d'installation.
Deuxièmement, examiner comment vous pouvez créer vos requêtes à la base de données avec la norme Model.objects.filter()
appel. Si cela est fait dans le cadre d'un point de vue, c'est très simple: construire l' QuerySet
et de visualiser les instances. Par exemple:
tag_query = Tag.objects.filter( name='stackoverflow' )
if( tag_query.count() > 0 ):
tag = tag_query[0]
tag.name = 'stackoverflowed'
tag.save()
Sympa, simple et propre. Maintenant, sans la béquille de Django demande/réponse de système de chaînage, vous devez initialiser la connexion de base de données, faire la requête, puis fermer la connexion. Ainsi l'exemple ci-dessus devient:
from django.db import reset_queries, close_connection, _rollback_on_exception
reset_queries()
try:
tag_query = Tag.objects.filter( name='stackoverflow' )
if( tag_query.count() > 0 ):
tag = tag_query[0]
tag.name = 'stackoverflowed'
tag.save()
except:
_rollback_on_exception()
finally:
close_connection()
La connexion de base de données de gestion peut également être fait via Django signaux. Tous les ci-dessus est défini dans django/db/init.py. D'autres Orm ont aussi ce genre de gestion de la connexion, mais vous n'avez pas besoin de creuser dans leur source pour savoir comment le faire. SQL Alchimie de la connexion du système de gestion documenté dans les tutoriels et d'ailleurs.
Enfin, vous devez garder à l'esprit que la base de données objet de connexion locale pour le thread courant en tout temps, ce qui peut ou peut ne pas vous limiter en fonction de vos besoins. Si votre application n'est pas apatride, comme Django, mais persistant, vous pouvez frapper problèmes de threading.
En conclusion, c'est une question d'opinion. À mon avis, à la fois les limitations de, et l'installation nécessaire pour, ORM de Django reinhardt, distinct du cadre est trop de responsabilité. Il y a parfaitement viable dédié ORM solutions disponibles ailleurs qui sont conçus pour l'utilisation de la bibliothèque. Django n'est pas.
Ne pense pas que tous les ci-dessus montre que je n'aime pas Django et de tous les rouages, j'aime vraiment Django beaucoup! Mais je suis réaliste sur les capacités et un ORM bibliothèque n'est pas l'un d'eux.
P. S. Multiples de connexion à la base de soutien est en train d'être travaillé sur. Mais il n'est pas là maintenant.