Hi Vinay, On 02/02/2016 12:14 PM, 'Vinay Sajip' via Django users wrote: > I'm not arguing for any particular different routing scheme to be > included - only for management commands to be able to be written to > respect --data arguments passed to them, and which can easily treat the > passed value as the default database to use just for that command > invocation, when that value is different to whatever > settings.DATABASES['default'] is. A quick look at the builtin management > commands shows there's a lot of usage > of connections[options.get('database')] going on, and yet externally > written management commands aren't encouraged to use the same approach, > and multiple settings files are the suggested alternative?
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 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. In other words, the built-in management commands aren't doing anything different from what I originally recommended you do (just use `using`). 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. Carl -- 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+unsubscr...@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/56B10877.10900%40oddbird.net. For more options, visit https://groups.google.com/d/optout.
signature.asc
Description: OpenPGP digital signature