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 クラスタ デュアルアクティブ アーキテクチャを展開する際の問題と解決策

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

推薦する

HTML リスト ボックス、テキスト フィールド、ファイル フィールドのサンプル コード

ドロップダウンボックス、テキストフィールド、ファイルフィールド 上半分はデモンストレーション効果、下...

MySQLインデックスの基礎となるデータ構造の詳細

目次1. インデックスの種類1. B+ツリー2. MyISAM と InnoDB の B+ ツリー ...

CentOS8 でローカル yum ソースを構成するための詳細なチュートリアル

centos8 ディストリビューションは、BaseOS および AppStream リポジトリを通じ...

CSS仕様 BEM CSSとOOCSSサンプルコード詳細説明

序文プロジェクト開発中、各人のコーディング習慣が異なるため、記述された CSS コードは十分に構造化...

オンラインチャットを実現するVue+sshフレームワーク

この記事では、オンラインチャットを実現するためのVue + sshフレームワークの具体的なコードを参...

Ubuntu 18.04 システムでの Redis および phpredis 拡張機能のインストールと設定の詳細な説明

この記事では、Ubuntu 18.04 に Redis と phpredis 拡張機能をインストール...

HTML ul および li タグを使用して画像を表示するサンプル コード

以下のコードをDreamweaverのコードエリアにコピーすると、プレビュー時に以下の画像が表示され...

CSS パフォーマンスの最適化 - will-change の使用方法の詳細な説明

will-change は、要素にどのような変更が行われるかをブラウザに伝え、ブラウザが事前に最適化...

サラウンドリフレクションロード効果を実現するHTML+CSS

この記事では、主に html + css を使用してサラウンド リフレクション ローディング エフェ...

WeChatアプレットがフォーム検証を実装

WeChatアプレットフォームの検証、参考までに具体的な内容は次のとおりです。プラグインWxVali...

実行中の時計を実装するための純粋な CSS3 コード

操作効果コードの実装html <div id="ウォッチ"> <...

Vueの計算プロパティの詳細な説明

1. 計算属性とは何ですか? 簡単に言えば、計算された結果が属性に保存されるもので、キャッシュとして...

負の距離(共感) - 相互影響の反復プロセス

ネガティブな距離は共感を意味します。序文(疑問の提起):プロダクトマネージャーは機能を把握します。機...

CSS 疑似要素を使用して複数の連続する要素のスタイルを制御する方法

CSS 疑似要素を使用して要素を制御する場合、一部の要素のスタイルを変更する必要があることがよくあり...

Excelアップロード機能を実現するVue + iViewの完全コード

1. HTML部分 <Col span="2">ファイルをアップロー...