最終更新日:2021‐09-20
- Modelの実装
- うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合
- Modelの実装
- うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合
Modelの実装
データベースと情報をやり取りするには、Modelクラスを通してやり取りします。
さっそくModelクラスを実装していきます。今回はBookmarkを格納するモデルを作ります。(SQLiteなので、defaultなど制約は反映されないようです。)
今回、レコードの作成日時・更新日時に初期値で現在日時を設定したいためDefault値を設定しています。現在日付を取得したい場合は、以下のようにtimezoneをインポートします
from django.utils import timezone
"""
Definition of models.
"""
from django.db import models
from django.utils import timezone
# Create your models here.
class Bookmark(models.Model):
user_id = models.CharField(max_length=36)
bookmark_id = models.CharField(max_length=36)
page_title = models.TextField()
url = models.TextField()
created_date = models.DateField(default = timezone.now)
updated_date = models.DateField(default = timezone.now)
is_deleted = models.BooleanField(default = False)
def __str__(self):
return self.headline
追加したモデルをデータベースに反映します。以下のコマンドをVisualStudioから打ち込みます。
プロジェクトを右クリック→[Python]→[open terminal]をクリックし、開発者用PowerShellに上記のコマンドを入力します。
$ python manage.py makemigrations
$ python manage.py migrate
最初のコマンドでPythonのプログラムが自動生成されます。2つ目のコマンドでデータベースが最新化され、テーブルが自動生成されました。テーブルが表示されない場合は、一度切断してから再接続してみてください。
うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合
以下コマンドで、マイグレーションの履歴を最初に戻しましょう
python manage.py migrate --fake app zero
マイグレーションの履歴の状態を表示するのはこちら
python manage.py showmigrations app
以下は実行ログです
PS C:\DjangoWebProject> python manage.py migrate --fake app zero
Operations to perform:
Unapply all migrations: app
Running migrations:
Rendering model states... DONE
Unapplying app.0001_initial... FAKED
PS C:\DjangoWebProject> python manage.py showmigrations app
app
[ ] 0001_initial
[ ] 0002_auto_20201215_2205
PS C:\DjangoWebProject> python manage.py migrate
Operations to perform:
Apply all migrations: admin, app, auth, contenttypes, sessions
Running migrations:
Applying app.0001_initial... OK
Applying app.0002_auto_20201215_2205... OK
Modelの実装
データベースと情報をやり取りするには、Modelクラスを通してやり取りします。
さっそくModelクラスを実装していきます。今回はBookmarkを格納するモデルを作ります。(SQLiteなので、defaultなど制約は反映されないようです。)
今回、レコードの作成日時・更新日時に初期値で現在日時を設定したいためDefault値を設定しています。現在日付を取得したい場合は、以下のようにtimezoneをインポートします
from django.utils import timezone
"""
Definition of models.
"""
from django.db import models
from django.utils import timezone
# Create your models here.
class Bookmark(models.Model):
user_id = models.CharField(max_length=36)
bookmark_id = models.CharField(max_length=36)
page_title = models.TextField()
url = models.TextField()
created_date = models.DateField(default = timezone.now)
updated_date = models.DateField(default = timezone.now)
is_deleted = models.BooleanField(default = False)
def __str__(self):
return self.headline
追加したモデルをデータベースに反映します。以下のコマンドをVisualStudioから打ち込みます。
プロジェクトを右クリック→[Python]→[open terminal]をクリックし、開発者用PowerShellに上記のコマンドを入力します。
$ python manage.py makemigrations
$ python manage.py migrate
最初のコマンドでPythonのプログラムが自動生成されます。2つ目のコマンドでデータベースが最新化され、テーブルが自動生成されました。テーブルが表示されない場合は、一度切断してから再接続してみてください。
うっかり直接A5:SQL Mk-2でテーブルを削除してしまった場合
以下コマンドで、マイグレーションの履歴を最初に戻しましょう
python manage.py migrate --fake app zero
マイグレーションの履歴の状態を表示するのはこちら
python manage.py showmigrations app
以下は実行ログです
PS C:\DjangoWebProject> python manage.py migrate --fake app zero
Operations to perform:
Unapply all migrations: app
Running migrations:
Rendering model states... DONE
Unapplying app.0001_initial... FAKED
PS C:\DjangoWebProject> python manage.py showmigrations app
app
[ ] 0001_initial
[ ] 0002_auto_20201215_2205
PS C:\DjangoWebProject> python manage.py migrate
Operations to perform:
Apply all migrations: admin, app, auth, contenttypes, sessions
Running migrations:
Applying app.0001_initial... OK
Applying app.0002_auto_20201215_2205... OK
技術の進化についていけていないシステムエンジニア。浅く広く、何でも大体はこなせるエンジニアで重宝されてる(つもり)。でもやっぱり特化した武器欲しい。
備忘録として記事を投稿していますが、少しでも誰かの助けになればと思います。
最近はプロジェクトでReact(TypeScript )を触っています。
趣味でギター弾きます。