django 刪除表後恢復
阿新 • • 發佈:2019-02-01
搭建測試環境
首先我們先建立一個blog的project
django-admin startproject blog
在建立一個account的app
cd blog
python mange.py startapp account
這時可以看到 migrations 裡面沒有任何關於模型的程式
編寫一個模型
class User(models.Model):
username = models.CharField(max_length=20,unique=True)
password = models.CharField(max_length=15)
在blog/settings.py中新增account app
生成遷移指令碼
python mange.py makemigrations
生成資料庫表項
python mange.py migrate
前期的django環境搭好了
. |-- account | |-- admin.py | |-- admin.pyc | |-- apps.py | |-- __init__.py | |-- __init__.pyc | |-- migrations | | |-- 0001_initial.py | | |-- 0001_initial.pyc | | |-- __init__.py | | `-- __init__.pyc | |-- models.py | |-- models.pyc | |-- tests.py | `-- views.py |-- blog | |-- __init__.py | |-- __init__.pyc | |-- settings.py | |-- settings.pyc | |-- urls.py | |-- urls.pyc | `-- wsgi.py |-- db.sqlite3 `-- manage.py
準備刪除資料庫
sqlite3 db.sqlite
drop table account_user;
恢復步驟
方法一
- 刪除account/migrations目錄中模型遷移指令碼,這裡就是0001_initial.py,0001_initial.pyc
- 進入資料庫,刪除django_migrations中跟account相關的所有表項
delete from django_migrations where app=”account”; - 重新執行資料遷移操作
python mange.py makemigrations
python mange.py migrate
方法二
註釋django中對應的Model
執行以下命令:
- python manage.py makemigrations
- python manage.py migrate –fake
去掉註釋重新遷移
- python manage.py makemigrations
- python manage.py migrate