Quel est le meilleur moyen d'accéder à des procédures stockées dans l'ORM de Django
Je suis en train de concevoir une assez complexe de base de données, et de savoir que certaines de mes questions seront loin en dehors de la portée de l'ORM de Django. Quelqu'un a intégré SP avec l'ORM de Django avec succès? Si oui, quel SGBDR et comment avez-vous fait?
- Django à l'Aide de la Procédure Stockée donnera une idée.
Vous devez vous connecter pour publier un commentaire.
Nous (musicpictures.com /eviscape.com) a écrit que django extrait mais ce n'est pas toute l'histoire (en fait, ce code a été testé uniquement sur Oracle à l'époque).
Procédures stockées sens lorsque vous souhaitez réutiliser essayé et testé SP code, ou lorsque l'un SP appel sera plus rapide que de multiples appels à la base de données - ou lorsque la sécurité exige modéré accès à la base de données - ou lorsque les requêtes sont très compliquées ou plusieurs étapes. Nous sommes à l'aide d'un modèle hybride/SP approche à la fois contre Oracle et les bases de données Postgres.
L'astuce est de le rendre facile à utiliser et à le garder "django", comme. Nous utilisons un make_instance fonction qui prend la suite de curseur et de créer des instances d'un modèle peuplée à partir du curseur. C'est bien parce que le curseur peut-retour des champs supplémentaires. Vous pouvez ensuite utiliser ces instances dans votre code /templates comme normal django objets de modèle.
# L'utiliser comme ceci:
# Et voici quelques fonctions utiles:
acclamations, Simon.
fn_generic
?Vous devez utiliser l'utilitaire de connexion dans Django:
ensuite, vous pouvez récupérer les données:
ou:
Plus d'infos ici: http://docs.djangoproject.com/en/dev/topics/db/sql/
Il y en est un bon exemple :
https://djangosnippets.org/snippets/118/
Si vous voulez regarder un réel projet en cours d'exécution qui utilise SP, découvrez minibooks. Une bonne partie de SQL personnalisée et utilise Postgres pl/pgsql pour SP. Je pense qu'ils vont supprimer le SP finalement, si (justification dans trac billet 92).
Ne pas.
Au sérieux.
Déplacer la procédure stockée logique dans votre modèle où il appartient.
Mettre un peu de code dans Django et un peu de code dans la base de données est un entretien cauchemar. J'ai passé trop de mes 30 ans, IL tente de nettoyer ce genre de mess.
Je suppose que l'amélioration de sql brut queryset soutien dans Django 1.2 pouvez rendre cela plus facile que vous ne l'auriez pas rouler vos propres make_instance type de code.