Wednesday, October 24, 2012

Re: Connecting to external databases from Views.py

Hi Gregg,

I've done something similar in the past - had several external databases (MS SQL and Oracle) attached to my Django project. These were backends of enterprise tools, hundreds of tables each.

I used the "manage.py inspectdb" command to reverse engineer each "external" DB, manually polished models I needed (inspectdb is great but can't always perfectly guess foreign key relations or field types). Then I set "managed=False" for each model of those external DB's to make sure Django won't try to modify them.

As for writing to those DB's, I had set up my DB routing so that these DB's were available only for read, not for wrining. I made sure that my code never attempted to write to those DB's. I also never used Django admin for this project.

YMMV

Jirka

P.S. You can override the save() of your models in"external DB" method to do nothing
From: Gregg Branquinho <gregg@freightman.com>
Sender: django-users@googlegroups.com
Date: Wed, 24 Oct 2012 21:43:01 -0700 (PDT)
To: <django-users@googlegroups.com>
ReplyTo: django-users@googlegroups.com
Subject: Re: Connecting to external databases from Views.py

Hi Russel,

First off thank you for the suggestion, I am going to give it a whirl and see how it works out.. I have a couple of concerns about the pricing database it the
* it is on  mssql and the data is spread accross 3 database on the same server so the query would have to be cross database.. which also pose's a problem.
* the db's have like 300 table each..

Before you answer I wat thinking of accessing the database on the view *yuck* via pyodbc.

after your answer I have a couple more questions ?

Is is possible to override how a model is loaded from the database with raw sql and then overide the save and update methods to do nothing ? I have look at ovveriding __init__ but all recommendation are against it, but since I am not saving would it make any difference ?

Thanks very much for you previous answer as I feel it is pushing me towards a better solution

Kind regards
Gregg










On Thursday, 25 October 2012 02:49:49 UTC+2, Russell Keith-Magee wrote:
Hi Gregg,

Is there any reason you can't treat this as a mutliple-database configuration?


Django allows you to specify more than one database, and then direct queries at specific databases. So, you have your "main" django database for your own application, but you set up a connection to your "other" database to access the pricing report.

You'll need to write some Django model wrappers for the data in the 'other' database -- inspectdb can help with that -- but once you've done that, you'll be able to query the 'other' database as if it were a set of normal Django models.

Yours,
Russ Magee %-)

On Thu, Oct 25, 2012 at 4:43 AM, Gregg Branquinho <gr...@freightman.com> wrote:
Hi guys I am new to django and have built my first application that is being used to track and compare pricelists from vendors and it is working awesomly, I have had a request for a new feature and I am alittle boggled at to how I am going to do it..

Basically I wasnt to create a view which returns read only data(a report) from an external database which is not the django database. I dont want to copy the data to the django database and use a models as then concurreny become an issue

What would you guys recommened..

I was thinking on implenting a odbc connection from the views.py method called for my url ? but database call from the view , sound a abit dodgy.

Any ideas ?





Email Disclaimer | Quote Disclaimer | All business is undertaken subject to our General Trading Conditions, a copy of which is available on request and on our website www.freightman.com

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/ewQAAfxJlJ4J.
To post to this group, send email to django...@googlegroups.com.
To unsubscribe from this group, send email to django-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.


Email Disclaimer | Quote Disclaimer | All business is undertaken subject to our General Trading Conditions, a copy of which is available on request and on our website www.freightman.com

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/rboXgSmzH3cJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment