1つ、djangoモデル
Djangoは、PostgreSQL、MySQL、SQLite、Oracleなどのさまざまなデータベースを適切にサポートします。
Djangoは、これらのデータベースに統合された呼び出しAPIを提供します。ビジネスニーズに応じて、さまざまなデータベースを選択できます。
MySQLは、Webアプリケーションで最も一般的に使用されるデータベースです。
このブログでは、紹介する例としてMysqlを使用します。
MySQLの基本について詳しく知りたい場合は、新人チュートリアルアドレスを表示できます:https://www.runoob.com/mysql/mysql-tutorial.html
次に、サードパーティライブラリmysqlclientのインストール
詳細:Pythonは、mysqlデータベースを操作するためにサードパーティライブラリ[mysqlclient]をインストールする必要があります。サードパーティライブラリ[mysqlclient]は実際にはmysqlドライバです。
1.最初のステップ:コマンド[pip install mysqlclient]を使用して、最新バージョンのmysqlclientをダウンロードしてインストールします。
2.ステップ2:次に、コマンド[pip list]を使用して、mysqlclientの現在のバージョン番号を表示します。
3つ目は、Python操作mysqlの完全なステップです(このdjangoプロジェクト[helloworld]がまったく新しいプロジェクトであり、データベースが作成されていないことを前提としています)
1.最初のステップ:[hongjingsheng_project]という名前の新しいデータベースなど、ローカルmysqlデータベースに新しいデータベースを作成する必要があります。
詳細:
djangoに付属のormフレームワークはデータベースではなくデータテーブルのみを操作できるため、mysqlコマンドラインまたはローカルコンピューターのnavicateツールを使用してデータベースを手動で作成する必要があります(navicateツールを使用して作成することを選択しました)。
2.ステップ2:次に、djangoプロジェクト[helloworld]のパスを[helloworld / helloworld / settings.py]としてチェックします。pyファイルの属性[DATABASES]のシステムによって提供されるデフォルトのデータ。
詳細:属性[DATABASES]の特定の使用法については、公式のdjangoドキュメントアドレスを確認できます:https://docs.djangoproject.com/en/3.1/ref/settings/#databases
3.ステップ3:djangoプロジェクト[helloworld]はプロジェクトデータを保存するためのデータベースとしてmysqlデータベースを使用する必要があるため、djangoプロジェクト[helloworld]のパスを[helloworld / helloworld /settings.py]に設定する必要があります。 thispyファイル内の属性[DATABASES]の値が次のように変更されます。
属性[DATABASES]のデータ型は辞書であり、属性[DATABASES] [DATABASES ["default"] ["ENGINE"]]では、この[ENGINE]は次のことを意味します。接続データベースドライバーの名前。名前には次の状況があります。
- django.db.backends.postgresqlデータベースPostgreSQLに接続します
- django.db.backends.mysqlはデータベースmysqlに接続します
- django.db.backends.sqlite3データベースsqliteに接続します
- django.db.backends.oracleはデータベースoracleに接続します
4.ステップ4:djangoプロジェクト[helloworld]で、コマンドラインから新しいアプリケーション[hello]を作成します(このステップの操作方法は前のブログで説明されており、アプリケーション[hello]が作成されています。ここでは再作成する必要はありません)。
5.ステップ5:アプリケーション[hello]をdjangoプロジェクト[helloworld]のパス[helloworld / helloworld / settings.py]のプロパティINSTALLED_APPSに追加します。これは、djangoフレームワークがdjangoプロジェクト[helloworld]にあることを意味します。そのようなアプリケーション[こんにちは]。(前回のブログでは、この手順の操作方法について説明しました。アプリケーション[hello]が属性INSTALLED_APPSに追加されているため、ここで繰り返す必要はありません)。
6.ステップ6:djangoプロジェクト[helloworld]のパス[helloworld / hello /models.py]に対応するmodels.pyのコードコンテンツを変更します。
詳細:上のスクリーンショットからわかるように、新しいサブクラスPersonを作成しました。サブクラスPersonは親クラスmodels.Modelから継承します。このサブクラスPersonには、属性name(名前は名前を意味します)と属性age(年齢は年齢を意味します)があります。 。
ここでは、CharFieldクラスとIntegerFieldクラスの2つのクラスが使用されています。このクラスの詳細については、フォローアップ関連のブログで説明します。
注:複数のデータテーブルを作成する場合は、models.pyで異なるクラス名の複数のクラスを作成できます。特定の操作については、公式ドキュメントアドレスhttps://docs.djangoproject.com/en/3.1を参照してください。 / intro / tutorial02 /
7.ステップ7:関連するコマンドラインを使用して、指定したデータベースに関連するテーブル構造/テーブルを作成します(注:テーブル構造は実際にはテーブルであり、別の名前と呼ばれます)。(実際の開発プロセスでは、[3.7。ステップ7]このステップは無視できますが、完全な操作プロセスを作成するために、このステップはおそらくいくつかの主要な操作を作成します。)
7.1。まず、アプリケーションテーブル構造を作成する前に、djangoプロジェクト[helloworld]に対応するパス[helloworld / hello / migrations]のmigrationsフォルダーに[__init__。py]が1つしかないことがわかります。
7.2。次に、私たちはパス[helloworld /]の下にいます、
7.2.1。まず、スクリプトファイル[settings.py]に['ENGINE']の値を['django.db.backends。']と誤って入力し、コマンドライン[pythonmanage]を実行するとします。 .pymigrate]。([3.7.2.1]コンテンツのこの部分は、エラーログに従って問題を簡単に特定する方法を説明するためのものです。無視してかまいません)
ターミナルがコマンドを実行した後:python manage.pymigrate:
7.2.2。スクリプトファイル[settings.py]に['ENGINE']の値を['django.db.backends.mysql']として入力し、コマンドライン[pythonmanage]を正常に実行するとします。初めての.py移行]。
エラーを報告しました:
Djangoがmanage.pyプロンプトを実行する問題を解決しますNameError:名前 '_mysql'が定義されていません
その理由は次のとおりです。
Mysqldbはpython3.5以降のバージョンと互換性がありません
解決:
MySQLdbの代わりにpymysqlを使用する
ステップ:
- pymysqlをインストールします:pip install pymysql
- init .pyのsetting.pyでプロジェクトを開くか、現在のpyファイルの最初に直接プロジェクトを開いて次を追加します。
import pymysql
pymysql.install_as_MySQLdb()
バージョンを直接指定する良い方法は、他のソリューションよりも簡単です。
import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()
[python manage.pymigrate]を正常に実行した後:
詳細:これらのログは、指定されたデータベースで関連するデータテーブルが正常に生成されたことを示しています。
8. djangoフレームワークに、特定のアプリケーションのmodels.pyに変更があることを通知するには、次の操作を実行する必要があります。
次の説明のデータとして、アプリケーション[hello]を使用します。
8.1。最初に、パス[helloworld /]の下でコマンドライン[pythonmanage.py makemigrationshello]を実行します。
詳細:
(1)指定したアプリケーション名のデータテーブル情報を移行する場合、コマンドラインは[python manage.pymakemigrationsアプリケーション名]です。
(2)このコマンドライン[python manage.py makemigrations hello]が正常に実行された後に実行する機能は、この[hello]アプリケーションの唯一のファイルの[migrations]という名前のファイルに関連する移行ファイルのみを生成することです。移行ファイルには、追加および変更が必要なデータテーブル情報が含まれていますが、指定されたデータベースに関連するデータテーブルを生成する操作は実行されません。(これらの移行ファイルは、[3.9]の章に記載されている新しいコマンドが正常に実行された後、指定されたデータベースに関連データテーブルを作成する操作を実行します!)
(3)指定したdjangoプロジェクト内のすべてのアプリケーションのデータテーブル情報を移行するには、たとえば、djangoプロジェクト[helloworld]内のすべてのアプリケーションのデータテーブル情報を移行するには、コマンドラインは[python manage.pymakemigrations]です。
9.ステップ9:次に、データテーブルを追加および変更するアプリケーションをdjangoフレームワークに通知するために、次の操作を実行する必要があります。
次の説明のデータとして、アプリケーション[hello]を引き続き使用します。
9.1。最初に、パス[helloworld /]の下でコマンドライン[pythonmanage.pymigratehello]を実行します。
詳細:
(1)指定したデータベースに指定したアプリケーション名に含まれる最新のデータテーブル情報を作成するためのコマンドラインは[pythonmanage.pymigrateapplicationname]です。
(2)正常に実行された後のこのコマンドライン[python manage.py merge hello]の機能は、次のとおりです。指定されたデータベーステーブル情報の[hongjingsheng_project]という名前のデータベースの[hello]という名前のアプリケーションに含まれる最新のデータを生成します。)。
(3)指定されたデータベース内の指定されたdjangoプロジェクト内のすべてのアプリケーションのデータテーブル情報を生成するには、たとえば、djangoプロジェクト[helloworld]内のすべてのアプリケーションのデータテーブル情報を生成するには、コマンドラインは[pythonmanage。 pymigrate]
詳細:
(1)生成されたデータテーブルのテーブル名の値の規則は次のとおりです。applicationname_classname(注:クラス名の最初の大文字は小文字に変換されます)(例:hello_person)。
(2)[hello]アプリケーションのmodels.pyを直接テーブルに設定しなかった場合でも、djangoフレームワークは自動的にIDを主キーパーソンテーブルとして追加します。
(3)、[python manage.pymakemigrations]と[pythonmanage.pymakemigrationsアプリケーション名]と[pythonmanage.pymigrate]と[pythonmanage.pymigrateアプリケーション名]、これら4つのコマンドラインのより具体的な使用法と違いは、この大きな牛によって書かれたブログアドレスで見ることができます:https://blog.csdn.net/hpu_yly_bj/article/details/78928089