{"title":"レガシーなデータベースと Django の統合","version":"3.1","locale":"ja","docname":"howto/legacy-databases","url":"/ja/3.1/howto/legacy-databases/","canonical":"https://djangodocs.dev/ja/3.1/howto/legacy-databases/","summary":"Django は新しいアプリケーションを開発するのに最適ですが、レガシーなデータベースと統合することも可能です。Django には、それを自動化するいくつかのユーティリティが含まれています。 このドキュメントは:doc: ` チュートリアル </intro/tutorial01>`に書かれているような、Django…","html":"<h1>レガシーなデータベースと Django の統合<a class=\"heading-anchor\" href=\"#integrating-django-with-a-legacy-database\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django は新しいアプリケーションを開発するのに最適ですが、レガシーなデータベースと統合することも可能です。Django には、それを自動化するいくつかのユーティリティが含まれています。</p>\n<p>このドキュメントは:doc:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>チュートリアル &lt;/intro/tutorial01&gt;`に書かれているような、Django についての基本的な知識を持っていることを想定しています。</p>\n<p>Django のセットアップが完了したら、次の一般的なプロセスに従うことで、既存のデータベースと統合することができます。</p>\n<section id=\"give-django-your-database-parameters\">\n<h2>Django に既存データベースのパラメータを与える<a class=\"heading-anchor\" href=\"#give-django-your-database-parameters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>まず、Django に既存のデータベース接続のパラメータとデータベースの名前を教えてあげる必要があります。そのために、設定ファイルの <a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DATABASES</span></code></a> を編集して、<code class=\"docutils literal notranslate\"><span class=\"pre\">'default'</span></code> 接続の以下のキーに対して値を設定します。</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-DATABASE-ENGINE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ENGINE</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-USER\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USER</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-PASSWORD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">PASSWORD</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-HOST\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">HOST</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-PORT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">PORT</span></code></a></p></li>\n</ul>\n</section>\n<section id=\"auto-generate-the-models\">\n<h2>モデルを自動生成する<a class=\"heading-anchor\" href=\"#auto-generate-the-models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django comes with a utility called <a class=\"reference internal\" href=\"/ja/3.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">inspectdb</span></code></a> that can create models\nby introspecting an existing database. You can view the output by running this\ncommand:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>inspectdb\n</code></pre></div>\n<p>Save this as a file by using standard Unix output redirection:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>inspectdb<span class=\"w\"> </span>&gt;<span class=\"w\"> </span>models.py\n</code></pre></div>\n<p>This feature is meant as a shortcut, not as definitive model generation. See the\n<a class=\"reference internal\" href=\"/ja/3.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">documentation</span> <span class=\"pre\">of</span> <span class=\"pre\">inspectdb</span></code></a> for more information.</p>\n<p>Once you've cleaned up your models, name the file <code class=\"docutils literal notranslate\"><span class=\"pre\">models.py</span></code> and put it in\nthe Python package that holds your app. Then add the app to your\n<a class=\"reference internal\" href=\"/ja/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> setting.</p>\n<p>By default, <a class=\"reference internal\" href=\"/ja/3.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">inspectdb</span></code></a> creates unmanaged models. That is,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">managed</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code> in the model's <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> class tells Django not to manage\neach table's creation, modification, and deletion:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>class<span class=\"w\"> </span>Person<span class=\"o\">(</span>models.Model<span class=\"o\">)</span>:\n<span class=\"w\">    </span><span class=\"nv\">id</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span>models.IntegerField<span class=\"o\">(</span><span class=\"nv\">primary_key</span><span class=\"o\">=</span>True<span class=\"o\">)</span>\n<span class=\"w\">    </span><span class=\"nv\">first_name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span>models.CharField<span class=\"o\">(</span><span class=\"nv\">max_length</span><span class=\"o\">=</span><span class=\"m\">70</span><span class=\"o\">)</span>\n<span class=\"w\">    </span>class<span class=\"w\"> </span>Meta:\n<span class=\"w\">       </span><span class=\"nv\">managed</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span>False\n<span class=\"w\">       </span><span class=\"nv\">db_table</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s1\">&#39;CENSUS_PERSONS&#39;</span>\n</code></pre></div>\n<p>If you do want to allow Django to manage the table's lifecycle, you'll need to\nchange the <a class=\"reference internal\" href=\"/ja/3.1/ref/models/options/#django.db.models.Options.managed\" title=\"django.db.models.Options.managed\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">managed</span></code></a> option above to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>\n(or remove it because <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> is its default value).</p>\n</section>\n<section id=\"install-the-core-django-tables\">\n<h2>Install the core Django tables<a class=\"heading-anchor\" href=\"#install-the-core-django-tables\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Next, run the <a class=\"reference internal\" href=\"/ja/3.1/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> command to install any extra needed database\nrecords such as admin permissions and content types:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>migrate\n</code></pre></div>\n</section>\n<section id=\"test-and-tweak\">\n<h2>テストと修正<a class=\"heading-anchor\" href=\"#test-and-tweak\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Those are the basic steps -- from here you'll want to tweak the models Django\ngenerated until they work the way you'd like. Try accessing your data via the\nDjango database API, and try editing objects via Django's admin site, and edit\nthe models file accordingly.</p>\n</section>","rootId":"integrating-django-with-a-legacy-database","toc":[{"title":"Django に既存データベースのパラメータを与える","anchor":"give-django-your-database-parameters","children":[]},{"title":"モデルを自動生成する","anchor":"auto-generate-the-models","children":[]},{"title":"Install the core Django tables","anchor":"install-the-core-django-tables","children":[]},{"title":"テストと修正","anchor":"test-and-tweak","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"「How-to」ガイド","url":"/ja/3.1/howto/"}],"prev":{"docname":"howto/initial-data","title":"モデルに対する初期データを投入する","url":"/ja/3.1/howto/initial-data/"},"next":{"docname":"howto/outputting-csv","title":"Django で CSV を出力する","url":"/ja/3.1/howto/outputting-csv/"},"formats":{"html":"/ja/3.1/howto/legacy-databases/","markdown":"/ja/3.1/howto/legacy-databases.md","json":"/ja/3.1/howto/legacy-databases.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/howto/legacy-databases.txt","official":"https://docs.djangoproject.com/ja/3.1/howto/legacy-databases/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}