Skip to content
Advertisement

What is the best way to access stored procedures in Django’s ORM

I am designing a fairly complex database, and know that some of my queries will be far outside the scope of Django’s ORM. Has anyone integrated SP’s with Django’s ORM successfully? If so, what RDBMS and how did you do it?

Advertisement

Answer

We (musicpictures.com / eviscape.com) wrote that django snippet but its not the whole story (actually that code was only tested on Oracle at that time).

Stored procedures make sense when you want to reuse tried and tested SP code or where one SP call will be faster than multiple calls to the database – or where security requires moderated access to the database – or where the queries are very complicated / multistep. We’re using a hybrid model/SP approach against both Oracle and Postgres databases.

The trick is to make it easy to use and keep it “django” like. We use a make_instance function which takes the result of cursor and creates instances of a model populated from the cursor. This is nice because the cursor might return additional fields. Then you can use those instances in your code / templates much like normal django model objects.

# Use it like this:

# And here are some helper functions:

cheers, Simon.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement