2017-06-10 8 views
1

私は助けが必要です。私はlocalhostデータベースに1つの既存のmysqlテーブルを持っており、DjangoとPythonを使って移行する必要があります。私は以下のコードを説明しています。DjangoとPythonを使用して既存のテーブルを移行する方法

私は以下の私のテーブル構造を与えているsettings.py

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'djangotest', 
     'USER': 'root', 
     'PASSWORD': '', 
     'HOST': '', 
     'PORT': '', 
    } 
} 

id name phone age 

models.py:

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.db import models 

# Create your models here. 
class Person(models.Model): 
    name = models.CharField(max_length=200) 
    phone = models.CharField(max_length=15) 
    age = models.IntegerField() 

実は私はDjango and Pythonに新しいですし、ここで私は、既存のを移行できコマンドを知っておく必要があり人が

表。

python manage.py makemigrations 

上記のコマンドは内移行ファイルを使用して/更新テーブルを作成するために、アプリのディレクトリと
で移行フォルダ内にファイルを作成します - あなたは、このコマンドを使用する必要がある移行を作成するための

答えて

1

データベース

python manage.py migrate 

上記のコマンドは、DBにテーブルを作成/更新します。

Django Migration Docmentation

これはあなたが望むものであるならば、私に教えてください!

+0

@satyaこれはあなたが探しているものです。 – tom

+0

実際に私のDBには1つの既存のテーブルがあります。私はそれを移行する必要があります。 – satya

+0

マイグレーションでは、どういう意味ですか? – tom

0

シェルからinspectdbコマンドを使用できます。

python manage.py inspectdb 

これにより、現在のデータベース構造に対応するモデルが印刷されます。必要なモデルをコピーし、バリデーションの追加などの変更を行った後、他のモデルを追加します。

python manage.py makemigrationsは、移行を作成し、

python manage.py migrateは、それらのマイグレーションを適用します。

N.B:テーブル名はappname_modelnameという形式にする必要があります。appnameはdjangoのアプリ名(プロジェクト名ではない)の名前です。

0

コマンドを移行する--fakeオプションを追加します、

--fake

は適用または非適用されたとして移行をマークするためにDjangoに指示しますが、実際にあなたの データベーススキーマを変更するには、SQLを実行せず

これは、高度なユーザーが手動で変更を適用している場合、現在の の移行状態を直接操作するためのものです。 は、--fakeを使用すると、 の移行を正しく実行させるには、手動で復旧する必要がある状態に移行状態 テーブルを入れるリスクがあると警告しました。

あなただけのDjangoのプロジェクトを開始し、最初の移行を持っていなかった場合:最初の移行を行い、あなたのPersonモデルコメント、それを適用し、コメントを外しPersonは、Personの移行を作り、最後--fakeオプションでPersonを移行します。

関連する問題