Added docs/legacy_databases.txt
git-svn-id: http://code.djangoproject.com/svn/django/trunk@533 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
28d41fe270
commit
94960d5635
|
@ -69,7 +69,7 @@ customizations. In particular, you'll need to do this:
|
||||||
|
|
||||||
* Rearrange models' order, so that models that refer to other models are
|
* Rearrange models' order, so that models that refer to other models are
|
||||||
ordered properly.
|
ordered properly.
|
||||||
* Add primary_key=True to one field in each model. The ``inspectdb``
|
* Add ``primary_key=True`` to one field in each model. The ``inspectdb``
|
||||||
doesn't yet introspect primary keys.
|
doesn't yet introspect primary keys.
|
||||||
|
|
||||||
``inspectdb`` only works with PostgreSQL and MySQL. Foreign-key detection only
|
``inspectdb`` only works with PostgreSQL and MySQL. Foreign-key detection only
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
==================================
|
||||||
|
Integrating with a legacy database
|
||||||
|
==================================
|
||||||
|
|
||||||
|
While Django is best suited for developing new applications, it's quite
|
||||||
|
possible to integrate it into legacy databases. Django includes a couple of
|
||||||
|
utilities to automate as much of this process as possible.
|
||||||
|
|
||||||
|
This document assumes you know the Django basics, as covered in the official
|
||||||
|
tutorial.
|
||||||
|
|
||||||
|
Give Django your database parameters
|
||||||
|
====================================
|
||||||
|
|
||||||
|
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
|
||||||
|
settings file:
|
||||||
|
|
||||||
|
* ``DATABASE_ENGINE``
|
||||||
|
* ``DATABASE_USER``
|
||||||
|
* ``DATABASE_PASSWORD``
|
||||||
|
* ``DATABASE_NAME``
|
||||||
|
* ``DATABASE_HOST``
|
||||||
|
|
||||||
|
For more information on these settings see `Tutorial 1`_.
|
||||||
|
|
||||||
|
.. _Tutorial 1: http://www.djangoproject.com/documentation/tutorial1/
|
||||||
|
|
||||||
|
Auto-generate the models
|
||||||
|
========================
|
||||||
|
|
||||||
|
Django comes with a utility that can create models by introspecting an existing
|
||||||
|
database. You can view the output by running this command::
|
||||||
|
|
||||||
|
django-admin.py inspectdb [databasename] --settings=path.to.settings
|
||||||
|
|
||||||
|
...where "[databasename]" is the name of your database.
|
||||||
|
|
||||||
|
Save this as a file by using standard Unix output redirection::
|
||||||
|
|
||||||
|
django-admin.py inspectdb [databasename] --settings=path.to.settings > appname.py
|
||||||
|
|
||||||
|
This feature is meant as a shortcut, not as definitive model generation. See
|
||||||
|
the `django-admin.py documentation`_ for more information.
|
||||||
|
|
||||||
|
Once you've cleaned up the model, put the module in the ``models`` directory of
|
||||||
|
your app, and add it to your ``INSTALLED_APPS`` setting.
|
||||||
|
|
||||||
|
.. _django-admin.py documentation: http://www.djangoproject.com/documentation/django_admin/
|
||||||
|
|
||||||
|
Install the core Django tables
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Next, run the ``django-admin.py init`` command to install Django's core tables
|
||||||
|
in your database::
|
||||||
|
|
||||||
|
django-admin.py init --settings=path.to.settings
|
||||||
|
|
||||||
|
This won't work if your database already contains tables that have any of the
|
||||||
|
following names:
|
||||||
|
|
||||||
|
* ``sites``
|
||||||
|
* ``packages``
|
||||||
|
* ``content_types``
|
||||||
|
* ``redirects``
|
||||||
|
* ``flatfiles``
|
||||||
|
* ``core_sessions``
|
||||||
|
* ``flatfiles_sites``
|
||||||
|
* ``auth_permissions``
|
||||||
|
* ``auth_groups``
|
||||||
|
* ``auth_users``
|
||||||
|
* ``auth_messages``
|
||||||
|
* ``auth_admin_log``
|
||||||
|
* ``auth_groups_permissions``
|
||||||
|
* ``auth_users_groups``
|
||||||
|
* ``auth_users_user_permissions``
|
||||||
|
|
||||||
|
If that's the case, try renaming one of your tables to resolve naming
|
||||||
|
conflicts. Currently, there's no way of customizing the names of Django's
|
||||||
|
database tables without editing Django's source code itself.
|
||||||
|
|
||||||
|
Install metadata about your app
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Django has a couple of database tables that contain metadata about your apps.
|
||||||
|
You'll need to execute the SQL output by this command::
|
||||||
|
|
||||||
|
django-admin.py sqlinitialdata [appname] --settings=path.to.settings
|
||||||
|
|
||||||
|
See whether it worked
|
||||||
|
=====================
|
||||||
|
|
||||||
|
That's it. Try accessing your data via the Django database API, and try editing
|
||||||
|
objects via Django's admin site.
|
Loading…
Reference in New Issue