blob: 8230c11f619545aa66590e4e98f1ee971483c72d [file] [log] [blame]
==================================
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`_.
.. _official tutorial: ../tutorial1/
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_NAME`
* `DATABASE_ENGINE`_
* `DATABASE_USER`_
* `DATABASE_PASSWORD`_
* `DATABASE_HOST`_
* `DATABASE_PORT`_
.. _settings file: ../settings/
.. _DATABASE_NAME: ../settings/#database-name
.. _DATABASE_ENGINE: ../settings/#database-engine
.. _DATABASE_USER: ../settings/#database-user
.. _DATABASE_PASSWORD: ../settings/#database-password
.. _DATABASE_HOST: ../settings/#database-host
.. _DATABASE_PORT: ../settings/#database-port
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 --settings=path.to.settings
Save this as a file by using standard Unix output redirection::
django-admin.py inspectdb --settings=path.to.settings > models.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 your models, name the file ``models.py`` and put it in
the Python package that holds your app. Then add the app to your
``INSTALLED_APPS`` setting.
.. _django-admin.py documentation: ../django_admin/
Install the core Django tables
==============================
Next, run the ``manage.py syncdb`` command to install any extra needed database
records such as admin permissions and content types::
django-admin.py init --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.