Dear Carl,
On Tuesday, February 2, 2016 at 7:51:20 PM UTC, Carl Meyer wrote:
-- On Tuesday, February 2, 2016 at 7:51:20 PM UTC, Carl Meyer wrote:
There's nothing wrong with connections[options.get('database')] if you
want to get a specific database connection object; that's public API and
you can use it. In the case of the built-in commands, that's useful
OK, perhaps I misunderstood what you said in an earlier comment - I see you were talking against using the internals of the connection rather the connection itself.
because they need to do low-level things with the connection; I don't
think it helps you for regular ORM use. It doesn't allow changing the
default connection for ORM usage. Where the built-in management commands
do use the higher-level ORM, they use the public `using` APIs.
That's fine for simple use, but it's not good have lots of using() calls for models when it's not a "real" multi-DB scenario,
If you want to write a management command that has a --database option
like the built-in ones and makes heavy use of the ORM, you can a)
explicitly provide `using` where needed , b) use
django-dynamic-db-router, or c) hold your nose and monkeypatch
DEFAULT_DB_ALIAS, since it's just a one-shot management command and you
don't need to be as concerned about cleaning up after yourself.
Personally I would go for (a) or (b), depending on just how much I was
using the ORM in the management command. I'm not convinced that a fourth
(or third supported public) option is necessary here. If it's just a few
queries, you use `using`, if it's more than that and you want a broader
policy applied, you use a database router.
OK, thanks for the suggestion - you've been very helpful, as always. I'll mull things over and see what's the best for the specifics of the specific project.
Regards,
Vinay Sajip
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/832b093d-1d5a-4d24-9125-9eeb9297bbd0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment