Djangoモデル(ORM)
授業内容を整理する
コース名:フィードバック機能付きPython/張高Webサービス開発完全ガイド
講座:ドラムORM
データベースとSQL
SQL:データベースを問い合わせる言語
SQLは直接作成できますが、オブジェクト-リレーションシップマッピング(ORM)を使用してSQLを作成/実行することもできます.
ORMを使用しても、最適化するには、作成したORMコードでどのSQLが実行されているかを決定する必要があります.
高ORMモデルはRDBのみ対応
複数種類のPython ORM
Rleational Databases
長い間の利点はモデルとFormにありました
もちろん、将来的には複数のORMライブラリを使用することもできます.適宜混合使用可能
SQLを直接実行できますが、簡単に言えばORM tkdyd
Django Model
データベーステーブルとPythonクラスを1:1にマッピング
モデルクラス名は、Post(x)、Post(O)などの単数形式です.
モデルを作成する前に、データベース設計はサービスと一致する必要があります.
アプリケーションフォルダのmodels.pyファイルに次のように作成します.
モデルの使用順序
モデル名とデータベース・テーブル名
DBテーブル名:デバッガ「アプリケーション名モデル名」
ex.
ブログアプリケーション
適用順序
Itemモデルの定義
移行ファイルの作成
python3 manage.py makemigrations 앱이름
移行ファイルの適用python3 manage.py migrate
データベースチェック#sqllite가 생성되어 있다면
python3 manage.py dbshell
上記の順序でモデルを作成および適用
アプリケーションの登録
Instagramというアプリケーションの作成
python3 manage.py startapp instagram
settings.アプリケーション名をpyに追加INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'instagram',
]
urls.直接pyを追加
入力内容は次のとおりです.
urlpatterns = []
プロジェクトディレクトリurls.pyに次の行を追加モデルの作成
Instagramディレクトリモデル.pyでモデルを作成するには、次の手順に従います.
from django.db import models
# Create your models here.
class Post(models.Model):
message = models.Textfield()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
移行ファイルの適用
python3 manage.py makemigrations instagram
誤字がある場合は、次のエラーが発生します.AttributeError: module 'django.db.models' has no attribute 'Textfield'
または設定します.pyにアプリケーションを追加していないか、アプリケーションを追加して保存していない場合は、次のエラーが発生します.No installed app with label 'instagram'.
成功後、灸は以下の通りである.Migrations for 'instagram':
instagram/migrations/0001_initial.py
- Create model Post
移行ファイルの適用
次のコマンドを入力します.
python3 manage.py migrate instagram
下図のように、モデルとして表示されます.pyで作成したPostというテーブルに基づいてOperations to perform:
Apply all migrations: instagram
Running migrations:
Applying instagram.0001_initial... OK
データベース内のコードの確認
python3 manage.py sqlmigrate instagram 0001_initial
以下のコマンドが入力されていることがわかります(idは指定されていませんが、primary keyが自動的に生成され、Xに勝つ)BEGIN;
--
-- Create model Post
--
CREATE TABLE "instagram_post" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "message" text NOT NULL, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);
COMMIT;
Reference
この問題について(Djangoモデル(ORM)), 我々は、より多くの情報をここで見つけました https://velog.io/@a87380/Django-모델-ORMテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol