ホームページ  >  記事  >  バックエンド開発  >  PythonのORMフレームワークであるPony ORMの詳細説明

PythonのORMフレームワークであるPony ORMの詳細説明

WBOY
WBOYオリジナル
2023-06-10 21:30:342634ブラウズ

Python は、Web 開発、科学技術コンピューティング、データ処理などの分野で広く使用されている高水準プログラミング言語です。 Python 開発では、ORM (オブジェクト リレーショナル マッピング) フレームワークは重要なコンポーネントであり、リレーショナル データベースとオブジェクト指向プログラミング言語の間に一貫したブリッジを確立し、Python プログラマーの開発作業を容易にします。

多くの Python ORM フレームワークの中でも、Pony ORM は軽量のオブジェクト リレーショナル マッピング ツールです。Python 言語の自然でシンプルな構文を使用し、Python オブジェクトをリレーショナル データベースに迅速にマッピングできる豊富な機能を提供します。 。

  1. インストール

まず、pip パッケージ管理ツールを通じてインストールする必要があります。

pip install pony

  1. クイック スタート

2.1 データベースへの接続

まず、データベースに接続する必要があります。 Pony ORM は、MySQL、PostgreSQL、SQLite、Oracle、MS SQL Server などの複数のリレーショナル データベースをサポートします。 SQLite を例に挙げてみましょう。

from pony.orm import *

db = Database()

db.bind(provider='sqlite', filename='database.sqlite', create_db=True )

データベースに接続する前に、データベース インスタンスを定義し、bind() メソッドでデータベースの種類とデータベース名を指定する必要があることに注意してください。データベースが存在しない場合は、create_db=True オプションを使用してデータベースを自動的に作成できます。

2.2 エンティティ クラスの定義

次に、Python クラスを定義し、db.Entity() デコレータを通じてエンティティ クラスに変換する必要があります。エンティティ クラスの属性はデータベースのテーブル列にマップされ、エンティティ クラスのインスタンスはテーブルの行に対応します。

class Customer(db.Entity):

name = Required(str)
age = Required(int)
address = Optional(str)

上記のコードでは、Customer エンティティ クラスと 3 つの属性 (名前、年齢、住所) を定義します。このうち、名前と年齢は必須属性(Required)、住所は任意属性(Optional)です。

2.3 テーブルの作成

エンティティ クラスを作成した後、対応するテーブル構造をデータベース内に作成する必要があります。これは、db.generate_mapping() メソッドを通じて実行できます。

db.generate_mapping(create_tables=True)

上記の手順を完了すると、データベースに正常に接続し、エンティティ クラスを定義し、対応するテーブルをデータベースに作成できました。

  1. 作成、削除、変更、確認

3.1 データの挿入

データの挿入は一般的な操作です。 Pony ORM を介して、データを簡単に挿入できます。

with db_session:

c1 = Customer(name='Tom', age=20)
c2 = Customer(name='Jerry', age=25, address='New York')
flush()

上記のコードでは、with db_session キーワードを使用してセッションを宣言し、Customer エンティティ クラスをインスタンス化して 2 つの Customer インスタンス c1 と c2 を作成し、Assignそれを変数に代入します。次に、flush() メソッドを呼び出して、インスタンス c1 と c2 をデータベースに挿入します。

3.2 データのクエリ

データのクエリは、ORM フレームワークの最も一般的に使用される機能の 1 つです。 Pony ORM を通じて、クエリ式または ORM オブジェクトを使用してデータをクエリできます。

クエリ式:

select(c for c in Customer if c.age > 20)

上記のコードでは、select() 関数を使用して指定します。クエリ対象のエンティティ クラス。ここでは、Customer テーブル内の 20 年以上前のレコードをクエリするように指定します。最後に、select() 関数を含む with db_session コンテキストを使用してクエリ操作を実行します。

ORM オブジェクト:

with db_session:

customers = Customer.select(lambda c:c.age > 20)
for c in customers:
    print(c.name, c.age, c.address)

上記のコードでは、with db_session キーワードを使用してセッションを宣言し、Customer.select() を使用してクエリを実行します。顧客テーブル 年齢層が20歳以上のレコード。クエリ結果は ORM オブジェクトとして表現され、Python オブジェクトと同じようにそのプロパティやメソッドにアクセスできます。最後に、for ループを使用してクエリ結果を出力します。

3.3 データの更新

データの更新操作は非常に簡単です。最初に更新する必要があるレコードをクエリし、次に対応する属性値を変更し、最後にフラッシュを呼び出すだけです。 () メソッドを使用して変更したデータを保存するだけです。

with db_session:

customer = Customer.get(name='Tom')
customer.address = 'Beijing'
flush()

上記のコードでは、Customer.get() ステートメントを使用して Tom という名前の顧客レコードをクエリし、そのアドレスを北京に変更します。最後に、flush() メソッドを呼び出して、更新されたデータをデータベースに保存します。

3.4 データの削除

データの削除も非常に簡単で、最初に削除する必要があるレコードをクエリしてから、その delete() メソッドを呼び出すだけです。

with db_session:

customer = Customer.get(name='Tom')
customer.delete()

上記のコードでは、Customer.get() ステートメントを使用して Tom という名前の顧客レコードをクエリし、その delete() メソッドを呼び出して顧客を削除します。データベースからレコードを取得します。

  1. 概要

Pony ORM は、永続化のために Python オブジェクトをリレーショナル データベースにすばやくマップできる、シンプルで使いやすく、機能が豊富な Python ORM フレームワークです。 。 Pony ORM を使用する場合、最初にデータベースに接続し、次にエンティティ クラスを定義し、テーブルを作成し、最後に追加、削除、変更、クエリ式または ORM オブジェクトによるクエリなどの操作を実装する必要があります。初心者にとって、Pony ORM は学習コストが低く、すぐに使い始めることができる非常にフレンドリーな ORM フレームワークです。

以上がPythonのORMフレームワークであるPony ORMの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。