mirror of
https://github.com/django/django.git
synced 2025-07-05 02:09:13 +00:00
magic-removal: Fixed #1544 -- Changed 'inspectdb' to use database name from DATABASE_NAME setting instead of command line. Thanks, pb
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2711 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
32aa5c977d
commit
ef3c0e06e1
@ -668,7 +668,7 @@ def startapp(app_name, directory):
|
|||||||
startapp.help_doc = "Creates a Django app directory structure for the given app name in the current directory."
|
startapp.help_doc = "Creates a Django app directory structure for the given app name in the current directory."
|
||||||
startapp.args = "[appname]"
|
startapp.args = "[appname]"
|
||||||
|
|
||||||
def inspectdb(db_name):
|
def inspectdb():
|
||||||
"Generator that introspects the tables in the given database name and returns a Django model, one line at a time."
|
"Generator that introspects the tables in the given database name and returns a Django model, one line at a time."
|
||||||
from django.db import connection, get_introspection_module
|
from django.db import connection, get_introspection_module
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -680,7 +680,6 @@ def inspectdb(db_name):
|
|||||||
object_name = table_name.title().replace('_', '')
|
object_name = table_name.title().replace('_', '')
|
||||||
return object_name.endswith('s') and object_name[:-1] or object_name
|
return object_name.endswith('s') and object_name[:-1] or object_name
|
||||||
|
|
||||||
settings.DATABASE_NAME = db_name
|
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
yield "# This is an auto-generated Django model module."
|
yield "# This is an auto-generated Django model module."
|
||||||
yield "# You'll have to do the following manually to clean this up:"
|
yield "# You'll have to do the following manually to clean this up:"
|
||||||
@ -776,7 +775,7 @@ def inspectdb(db_name):
|
|||||||
yield ' db_table = %r' % table_name
|
yield ' db_table = %r' % table_name
|
||||||
yield ''
|
yield ''
|
||||||
inspectdb.help_doc = "Introspects the database tables in the given database and outputs a Django model module."
|
inspectdb.help_doc = "Introspects the database tables in the given database and outputs a Django model module."
|
||||||
inspectdb.args = "[dbname]"
|
inspectdb.args = ""
|
||||||
|
|
||||||
class ModelErrorCollection:
|
class ModelErrorCollection:
|
||||||
def __init__(self, outfile=sys.stdout):
|
def __init__(self, outfile=sys.stdout):
|
||||||
@ -1153,11 +1152,7 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING):
|
|||||||
action_mapping[action]()
|
action_mapping[action]()
|
||||||
elif action == 'inspectdb':
|
elif action == 'inspectdb':
|
||||||
try:
|
try:
|
||||||
param = args[1]
|
for line in action_mapping[action]():
|
||||||
except IndexError:
|
|
||||||
parser.print_usage_and_exit()
|
|
||||||
try:
|
|
||||||
for line in action_mapping[action](param):
|
|
||||||
print line
|
print line
|
||||||
except NotImplementedError:
|
except NotImplementedError:
|
||||||
sys.stderr.write(style.ERROR("Error: %r isn't supported for the currently selected database backend.\n" % action))
|
sys.stderr.write(style.ERROR("Error: %r isn't supported for the currently selected database backend.\n" % action))
|
||||||
|
@ -91,11 +91,11 @@ example, the default settings don't define ``ROOT_URLCONF``, so
|
|||||||
|
|
||||||
Note that Django's default settings live in ``django/conf/global_settings.py``.
|
Note that Django's default settings live in ``django/conf/global_settings.py``.
|
||||||
|
|
||||||
inspectdb [dbname]
|
inspectdb
|
||||||
------------------
|
---------
|
||||||
|
|
||||||
Introspects the database tables in the given database and outputs a Django
|
Introspects the database tables in the database pointed-to by the
|
||||||
model module to standard output.
|
``DATABASE_NAME`` setting and outputs a Django model module to standard output.
|
||||||
|
|
||||||
Use this if you have a legacy database with which you'd like to use Django.
|
Use this if you have a legacy database with which you'd like to use Django.
|
||||||
The script will inspect the database and create a model for each table within
|
The script will inspect the database and create a model for each table within
|
||||||
@ -124,13 +124,11 @@ you run it, you'll want to look over the generated models yourself to make
|
|||||||
customizations. In particular, you'll need to rearrange models' order, so that
|
customizations. In particular, you'll need to rearrange models' order, so that
|
||||||
models that refer to other models are ordered properly.
|
models that refer to other models are ordered properly.
|
||||||
|
|
||||||
If you're using Django 0.90 or 0.91, you'll need to add ``primary_key=True`` to
|
Primary keys are automatically introspected for PostgreSQL and MySQL, and
|
||||||
one field in each model. In the Django development version, primary keys are
|
Django puts in the ``primary_key=True`` where needed.
|
||||||
automatically introspected for PostgreSQL and MySQL, and Django puts in the
|
|
||||||
``primary_key=True`` where needed.
|
|
||||||
|
|
||||||
``inspectdb`` works with PostgreSQL, MySQL and SQLite. Foreign-key detection
|
``inspectdb`` works with PostgreSQL, MySQL and SQLite. Foreign-key detection
|
||||||
only works in PostgreSQL.
|
only works in PostgreSQL and with certain types of MySQL tables.
|
||||||
|
|
||||||
install [modelmodule modelmodule ...]
|
install [modelmodule modelmodule ...]
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
@ -18,6 +18,7 @@ You'll need to tell Django what your database connection parameters are, and
|
|||||||
what the name of the database is. Do that by editing these settings in your
|
what the name of the database is. Do that by editing these settings in your
|
||||||
`settings file`_:
|
`settings file`_:
|
||||||
|
|
||||||
|
* `DATABASE_NAME`
|
||||||
* `DATABASE_ENGINE`_
|
* `DATABASE_ENGINE`_
|
||||||
* `DATABASE_USER`_
|
* `DATABASE_USER`_
|
||||||
* `DATABASE_PASSWORD`_
|
* `DATABASE_PASSWORD`_
|
||||||
@ -26,6 +27,7 @@ what the name of the database is. Do that by editing these settings in your
|
|||||||
* `DATABASE_PORT`_
|
* `DATABASE_PORT`_
|
||||||
|
|
||||||
.. _settings file: http://www.djangoproject.com/documentation/settings/
|
.. _settings file: http://www.djangoproject.com/documentation/settings/
|
||||||
|
.. _DATABASE_NAME: http://www.djangoproject.com/documentation/settings/#database-name
|
||||||
.. _DATABASE_ENGINE: http://www.djangoproject.com/documentation/settings/#database-engine
|
.. _DATABASE_ENGINE: http://www.djangoproject.com/documentation/settings/#database-engine
|
||||||
.. _DATABASE_USER: http://www.djangoproject.com/documentation/settings/#database-user
|
.. _DATABASE_USER: http://www.djangoproject.com/documentation/settings/#database-user
|
||||||
.. _DATABASE_PASSWORD: http://www.djangoproject.com/documentation/settings/#database-password
|
.. _DATABASE_PASSWORD: http://www.djangoproject.com/documentation/settings/#database-password
|
||||||
@ -39,13 +41,11 @@ Auto-generate the models
|
|||||||
Django comes with a utility that can create models by introspecting an existing
|
Django comes with a utility that can create models by introspecting an existing
|
||||||
database. You can view the output by running this command::
|
database. You can view the output by running this command::
|
||||||
|
|
||||||
django-admin.py inspectdb [databasename] --settings=path.to.settings
|
django-admin.py inspectdb --settings=path.to.settings
|
||||||
|
|
||||||
...where "[databasename]" is the name of your database.
|
|
||||||
|
|
||||||
Save this as a file by using standard Unix output redirection::
|
Save this as a file by using standard Unix output redirection::
|
||||||
|
|
||||||
django-admin.py inspectdb [databasename] --settings=path.to.settings > appname.py
|
django-admin.py inspectdb --settings=path.to.settings > appname.py
|
||||||
|
|
||||||
This feature is meant as a shortcut, not as definitive model generation. See
|
This feature is meant as a shortcut, not as definitive model generation. See
|
||||||
the `django-admin.py documentation`_ for more information.
|
the `django-admin.py documentation`_ for more information.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user