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

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

推薦する

CSS3で実装されたテキストポップアップ効果

成果を達成する実装コードhtml <div>123WORDPRESS.COM</d...

ウェブサイト構築経験概要

<br />注目を集めるウェブサイトを作成するには、どのような原則に従うべきでしょうか?...

Vue2.0でデータの双方向バインディング機能をjsを使って実装する

Object.definePropertyの理解文法:オブジェクト.defineProperty(o...

MySQLインデックスに関する重要な面接の質問をいくつか共有します

序文インデックスは、データベース内の 1 つ以上の列の値を並べ替え、データベースが効率的にデータを取...

Linuxシステムはポート3306、8080などを外部に開放します。ファイアウォール設定の詳しい説明

多くの場合、Linux システムに Web サービス アプリケーション (Tomcat、Apache...

MySQL マルチバージョン同時実行制御 MVCC の詳細な研究

MVCC MVCC (Multi-Version Concurrency Control) は、マル...

WeChatアプレットが検索ボックス機能を実装

この記事の例では、WeChatアプレットの検索ボックス機能を実装するための具体的なコードを参考までに...

jQueryのコア機能とイベント処理の詳細な説明

目次イベントページの読み込みイベント委任イベントの切り替えイベント要約するイベントページの読み込み1...

Nginx tp3.2.3 404 問題の解決

最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...

インストールされていないバージョンの MySQL を使用する手順とパスワードを忘れた場合の解決策

最初のステップは、圧縮されたパッケージを対応するディスクに解凍することです。 2 番目の手順は、cm...

Dockerプライベートウェアハウスレジストリの導入

使用される Docker イメージが増えるにつれて、イメージを保存する場所、つまりウェアハウスが必要...

Linux resolv.conf の簡単な分析

1. はじめにresolv.conf は、さまざまなオペレーティング システムのドメイン ネーム シ...

JavaScript で文字列内の最長の単語を見つける 3 つの方法 (推奨)

この記事は、Free Code Camp の基本アルゴリズム スクリプト「文字列内の最長の単語を見つ...

Docker - コンテナマウントディレクトリを変更する3つの方法のまとめ

方法 1: 設定ファイルを変更する (docker サービスを停止する必要があります) 1. doc...

MySQL のファントムリード問題を解決する方法

目次序文1. ファントムリーディングとは何ですか? 2. ファントムリーディングの問題点は何ですか?...