Opened 11 years ago
Closed 11 years ago
#24579 closed Uncategorized (wontfix)
With argparse on Python 3, the migrate management command fails when no database provided
| Reported by: | Brandon Konkle | Owned by: | nobody |
|---|---|---|---|
| Component: | Uncategorized | Version: | 1.8 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
On Python 3.4, when 'migrate' is invoked with no --database option, the command fails.
File "/Users/brandon.konkle/code/django/django/core/management/commands/migrate.py", line 70, in handle
connection = connections[db]
File "/Users/brandon.konkle/code/django/django/db/utils.py", line 234, in __getitem__
if hasattr(self._connections, alias):
TypeError: hasattr(): attribute name must be string
This is because the newly-introduced argparse resolves db = options.get('database') to None, and Python 3 raises a TypeError when None is used as the first argument to hasattr.
Change History (3)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
For some reason, the the migrate command is showing up as having an option_list, so it's not calling the add_arguments() method and setting up the default.
comment:3 by , 11 years ago
| Resolution: | → wontfix |
|---|---|
| Status: | new → closed |
Aha! This is a side-effect of django-configurations adding the --configuration option to the base management command. I'll submit a pull request there.
Hmm, argparse actually shouldn't be resolving this to
None, because the --database option has a default set:default=DEFAULT_DB_ALIAS, which is 'default'.