ORM モデル フレームワークを使用して MySQL データベースを操作する方法

ORM モデル フレームワークを使用して MySQL データベースを操作する方法

ORM とは何ですか?

ORM は Object Relational Mapping の略で、オブジェクト リレーショナル マッピングを意味します。一般的には、プログラミング言語の仮想データベースとして理解できます。

ORMを理解する

ユーザーアドレス情報データベーステーブルとオブジェクト間のマッピング

【ORMの重要な特徴】

1. オブジェクト指向プログラミングの概念、拡張が容易

2. 開発効率を向上させるためにSQLを少なく(ほとんど書かない)

3. さまざまな種類のデータベース(一般的に使用されるmysql、pg、oracleなど)をサポートし、簡単に切り替えることができます。

4. ORM技術はすでにかなり成熟しており、ほとんどの問題を解決できる

[ORMモデルフレームワークの選択]

SQLAlchemy ORM モデル

ご存知のとおり、選択できる ORM フレームワーク モデルは多数あるため、ここでは SQLAlchemy モデル フレームワークを選択しました。

pip install SQLAlchemy install sql alchemy; バージョン番号を指定することもできます pip install SQLAlchemy ==1.4.17

import sqlalcherm; sqlalchemy.__version__; インストールが成功したかどうかとバージョン番号を確認します。

[SQL Alchemy の使用]

1. データベースへの接続を開始する 2. ORM モデル基本クラスを宣言する 3. ORM モデルクラスを実装する 4. データベーステーブルを同期する

データベースへの接続を開始する

  • 遅延接続 - 実際にデータベースを操作するときのみデータベースに接続します
  • 接続コードの例
sqlalchemyからcreate_engineをインポート

create_engine("mysql://root:@127.0.0.1:3306/school?charset=utf8,echo=True,future=True")

create_engine パラメータの説明

  1. url (デフォルトの最初のパラメータ) - mysql などの接続先のデータベースの種類、データベースへの接続に使用するデータベース コネクタ (ドライバ)
  2. echo——ログ情報を出力するかどうか。すべてのログが出力されます
  3. 将来はSQLAlchemy 2.0 APIスタイルを使用する

SQLAlchemy の設定

パスワードに特殊文字が含まれている場合はどうすればいいですか?

さっそく、以下のコードをご覧ください

urllib.parse から quote_plus をインポートします
パスワードに特殊文字が含まれている場合は、それを処理するためのクラスをインポートする必要があります。 password_formatted = quote.plus("mima%&&&mima")
処理されたパスワードを上記の sqlalchemy 設定に貼り付けます。

ORMモデル基本クラスを宣言する

sqlalchemy.orm から declarative_base をインポートします

この基本クラスを宣言します Base = declarative_base()

ORMモデルクラスの実装

どうやってそれを達成するのでしょうか? それを継承するクラスを作成する必要があります。

次に1つの属性を設定する必要があります

sqlalchemy から列、整数、文字列、日付時刻をインポートします


クラス Student(Base):
    「学生情報フォーム」
    __tablename__ = '学生'
    id = 列(整数、名前='id'、主キー=True)
    stu_no = 列(整数、nullable=False、コメント='学生番号')
    stu_name = 列(文字列(16)、nullable=False、コメント='name')
    created_at = 列(日時)

1. 同期する前にデータベースが存在することを確認する必要があります。存在しない場合は、手動で作成する必要があります。

2 テーブルの作成、テーブルの削除

orm_connect_exampleからBase、engineをインポートします

# テーブルを作成する Base.metadata.create_all(engine)

#テーブルを削除する Base.metadata.drop_all(engine)

[ORMに対応するモデルフィールドタイプ]

コード例

sqlalchemyからcreate_engineをインポート
sqlalchemy.orm から declarative_base をインポートします
sqlalchemy から列、整数、文字列、日付時刻をインポートします

# 最初のステップは接続の準備です engine = create_engine('mysql://root:@10.72.100.1:8081/test_database_1?charset=utf8',echo=True)

# ステップ 2: ORM モデルの基本クラスを宣言する Base = declarative_base()


# 3 番目のステップは、ORM モデル クラス class Student(Base) を実装することです。
    「学生情報フォーム」
    __tablename__ = '学生'
    id = 列(整数、名前='id'、主キー=True)
    stu_no = 列(整数、nullable=False、コメント='学生番号')
    stu_name = 列(文字列(16)、nullable=False、コメント='name')
    created_at = 列(日時)
#4番目のステップは、データベーステーブルを同期することです。def create_table()
    「データベース テーブルを同期する」
    # 新しいテーブルを作成する Base.metadata.create_all(bind=engine)
    # テーブルを削除する Base.metadata.drop_all(bind=engine)

ORM モデル フレームワークを使用して MySQL データベースを操作する方法についての記事はこれで終わりです。ORM モデル フレームワークに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Laravel フレームワーク Eloquent ORM の紹介、モデル構築、データクエリ操作の詳細な説明
  • Django フレームワーク オブジェクト指向 ORM モデル継承の使用例分析
  • MySqlはDATE_FORMATを使用してDateTimeフィールドの日付値をインターセプトします。
  • mysql データベース内の information_schema と mysql を削除できますか?

<<:  VMware で Nginx+KeepAlived クラスタ デュアルアクティブ アーキテクチャを展開する際の問題と解決策

>>:  フレックスレイアウトでコンテナ内のコンテンツを維持するためのソリューションの詳細な説明

推薦する

CSS フロートプロパティ図 フロートプロパティの詳細

CSS の float プロパティを正しく使用することは、カバーすべき内容が多く、ブラウザの互換性の...

mysqldumpデータエクスポートの問題に関する詳細な議論

1. mysqldump の使用時にエラー (1064) が報告されます。これは、mysqldump...

マウスを置いたときに半透明効果のテキスト説明を実現するための純粋な CSS (初心者は必読)

効果は以下のとおりです。 例1 例2:例1[結婚式の計画]を例にとるHTML: <div cl...

10分で始めるCSS3アニメーション

導入アニメーションを使用すると、JavaScript や jQuery に依存せずに、純粋な CSS...

vue3 カスタムディレクティブの詳細

目次1. カスタム指示の登録1.1. グローバルカスタム指示1.2. ローカルカスタム指示2. カス...

CentOS MySQLデータベースのスケジュールバックアップを実装する方法

次のスクリプトは、MySQLデータベース全体のスケジュールされたバックアップに使用されます。 mys...

MySQL 5.7 共通データ型

——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...

JavaScript の遅延読み込み属性パターンを理解する

従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...

Vue での親子コンポーネント通信と、sync を使用して親子コンポーネント データを同期する

目次序文子コンポーネントは親コンポーネントにデータを渡す1. 親コンポーネントから子コンポーネントに...

CSS3のfocus-withinセレクタの使用

擬似要素と擬似クラスところで、まずは疑似クラスセレクターと疑似要素セレクターについておさらいしておき...

Dockerコンテナ同士を接続する3つの方法の詳しい説明

Docker コンテナ間の相互接続と通信には 3 つの方法があります。 Docker 内部ネットワー...

Nginx の add_header ディレクティブに注意する必要があるのはなぜですか?

序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...

HTML で入力ボックスに純粋な数字のみを入力するように制限する方法

inputボックスを純粋な数字のみに制限する1、onkeyup = "value=valu...

ServerManager の起動時にデータベースに接続できないエラーを解決する方法

Servermanager 起動時の接続データベース エラーmgrstart.batを実行しますエラ...

1 つの記事で React における Redux の初期の使用を理解する

Redux はデータ状態管理プラグインです。React や Vue を使用してコンポーネント化された...