Opened 11 years ago
Last modified 2 years ago
#22775 new New feature
Management command sqlall should support unmanaged models
Reported by: | jarshwah | Owned by: | nobody |
---|---|---|---|
Component: | Core (Management commands) | Version: | dev |
Severity: | Normal | Keywords: | sqlall |
Cc: | loic84, Tim Graham | Triage Stage: | Accepted |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Pull Requests: | How to create a pull request | ||
Description ¶
Unmanaged models are generally used with legacy database tables, but creating those models in a development environment is also a manual process. It'd be great if django was able to produce the sql for managed models if explicitly asked for.
loic84, akaariai and I discussed this in IRC and came up with:
./manage sqlall applabel --include-unmanaged
The include unmanaged would print the sql necessary to create the unmanaged models (along with the sql for the other models in that app).
According to the ticket's flags, the next step(s) to move this issue forward are:
- To provide a patch by sending a pull request. Claim the ticket when you start working so that someone else doesn't duplicate effort. Before sending a pull request, review your work against the patch review checklist. Check the "Has patch" flag on the ticket after sending a pull request and include a link to the pull request in the ticket comment when making that update. The usual format is:
[https://github.com/django/django/pull/#### PR]
.
Change History (6)
comment:1 by , 11 years ago
Cc: | added |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 11 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
comment:3 by , 11 years ago
Cc: | added |
---|---|
Resolution: | wontfix |
Status: | closed → new |
@mardini, these commands going away doesn't change the fact that we don't have an answer to the problem of generating SQL for unmanaged models.
I think the feature request still stands even if it'll have to go through a different path than sqlall
.
comment:4 by , 11 years ago
May I suggest a workaround:
- Edit your app models, comment out the "managed=False" lines.
- Use sqlall, save output.
- Restore models.
Now you have a sql file you can use instead of manual labor.
Or, if you're terribly worried about forgetting to restore the models --
- Start a new project. Direct it to a database that has the tables.
- startapp
- inspectdb
- sqlall
- Throw away the project.
This can even be done in a script, in case your unmanaged models change and you need to re-do this often.
This one actually points in the direction of a possible solution -- it could be a flag on the inspectdb
command (--sql
or some such).
comment:5 by , 11 years ago
I don't think either of those workarounds are particularly good. We discussed setting managed=False as a temporary solution, but that can be cumbersome, and has to be repeated by every dev (unless you copy the output to a new script..). Your second solution also requires devs to have direct access to the production database, and possibly one that has a lot more in it then a single table that you just want to output sql for.
For my specific use-case I have materialised views and views in the production database (managed=False), but want to create tables that match the definition in the development database. These definitions may change over time, so inspectdb --sql
isn't really what I'm after. And with the sql commands going away, I'm not sure how switching the managed setting temporarily is going to work with migrations.
comment:6 by , 2 years ago
since sqlall has been deprecated , should we need to build a new command or add the feature on existing one?
After a discussion on IRC, Tim suggested closing this ticket and not doing any new work on sql commands, since they will be deprecated according to Andrew: https://code.djangoproject.com/ticket/22611#comment:6