ホームページ  >  記事  >  バックエンド開発  >  Python による ORM フレームワーク データベースの詳細な説明

Python による ORM フレームワーク データベースの詳細な説明

WBOY
WBOYオリジナル
2023-06-11 13:34:372286ブラウズ

近年、Python は学びやすく、使いやすく、非常に柔軟なプログラミング言語として開発分野でますます人気が高まっています。 Python アプリケーションでは、ORM (オブジェクト リレーショナル マッピング) フレームワークが重要な役割を果たします。これにより、開発効率が大幅に向上するだけでなく、開発者がデータとオブジェクトを管理しやすくなります。

ORM フレームワークでは、データベース ライブラリは、開発プロセス中にリレーショナル データベースにアクセスするためによく使用される新しい Python ライブラリです。このライブラリは Python 開発の世界ではまだ比較的新しいものですが、すでに大きな可能性を示しています。したがって、この記事では、開発者がこの強力な Python ORM フレームワークをよりよく理解し、学習できるように、データベース ライブラリを詳細に紹介します。

1. データベース開発の背景

データベース ライブラリは、非同期 SQL データベースの開発を簡素化するために使用される軽量の Python ライブラリです。非同期プログラミングには asyncio を使用し、PostgreSQL、MySQL、MariaDB、SQLite などのさまざまな SQL データベース エンジンと連携できます。さらに、データベース ライブラリは、非常に簡潔で使いやすい API も提供します。

データベース ライブラリの目標は、開発者がアプリケーションをより迅速に構築し、多くの反復コードを排除できるようにすることです。パフォーマンスの点で非常に優れており、接続プーリング、トランザクション管理、多くの非同期ドライバーの機能強化、ヘルプ ドキュメントなどの高度な機能を提供します。したがって、データベース ライブラリは、SQL データベースへの共同アクセスを必要とする複雑なマイクロサービスや大規模な Web アプリケーションにとって、間違いなく非常に良い選択肢です。

2. データベースのコア機能

データベース ライブラリの設計目標は、開発者がシンプルな API を使用して SQL データベースとの迅速な対話を実現できるようにすることです。以下に、データベース ライブラリのコア機能をいくつか紹介します:

1. コードは簡潔かつ明確です

データベース ライブラリは、開発者の開発効率を最大化するために Python の簡潔な構文を使用しています。Python を実装できます。非同期操作や同時操作などのすべての高度な機能。

たとえば、次のコードは「users」という名前のテーブルを作成します。その中で、テーブルのいくつかの属性には、ID、名前、年齢、電子メールが含まれます。

import databases

database = databases.Database("sqlite:///example.db")

query = "CREATE TABLE users (ID INT PRIMARY KEY, Name TEXT, Age INT, Email TEXT)"

await database.execute(query=query)

2. 共同クライアントおよびサーバー API

データベース ライブラリは、非同期操作と同期操作を含む高レベル API を提供するため、使用時にこれらの操作を統合できます。

import database

database = databases.Database("sqlite:///example.db")

# 异步操作(async)
async with database.transaction():
   query = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query, values=values)

# 同步操作
query = "SELECT * FROM users WHERE ID=:id"
values = {"id": 1}
result = database.fetch_one(query=query, values=values)

3. 接続プール

データベース ライブラリは、接続プールの問題を簡単に管理し、データベース アクセスの効率を向上させることができます。開発者がデータベース ライブラリを使用する場合、接続プール サイズを指定するだけで、接続を手動で管理する必要がなく、自動接続を簡単に実装できるため、非常に便利です。

たとえば、次のコードでは、データベース ライブラリが接続プールをより適切に管理できるように、接続の最大数と最小接続数を指定できます。

import databases

database = databases.Database("sqlite:///example.db", min_size=1, max_size=10)

4. トランザクション管理

データベース ライブラリは、操作実行時の一貫性と信頼性を確保するために、統合されたトランザクション管理を提供します。トランザクションは、開発者がバッチで操作を実行できるようにする非常に重要な DBMS 機能です。

たとえば、次のコードでは、トランザクションを非同期に開始してコミットすることで、データを共同処理できます。

import databases

database = databases.Database("sqlite:///example.db")

async with database.transaction():
   query_1 = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values_1 = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query_1, values=values_1)

   query_2 = "UPDATE users SET Age=:age WHERE ID=:id"
   values_2 = {"age": 25, "id": 1}
   await database.execute(query=query_2, values=values_2)

await database.commit()

5. 複数のデータベース エンジンのサポート

データベース ライブラリは、MySQL、PostgreSQL、MariaDB などのさまざまな一般的なデータベース エンジンをサポートします。これにより、必要なデータベース環境を簡単に構築できるようになります。

たとえば、次のコード スニペットがある場合、ニーズに応じて一般的に使用されるデータベース エンジンを選択できます。

import databases

database = databases.Database("postgresql://user:[email protected]:5432/example")

三、使用Databases库

在学习使用Databases库之前,我们需要先进行库的安装工作。

1.安装Databases库

我们可以通过以下命令安装Databases库:

pip データベースのインストール

2.创建数据库连接

要使用Databases库,我们首先需要通过URL字符串为我们的PHP应用程序创建一个与数据库引擎的连接。

データベースのインポート
データベースからインポート Database

database = Database("sqlite:///example.db")

3.查询数据

Databases库提供了8个异步和同步函数,可用于查询数据库: `fetch_all()`,`fetch_one()`, `fetch_val()`, `fetch_many()`, `fetch_optional()`, `execute()`, `execute_many()`和`iterate()`

すべての行をクエリします

result =database.fetch_all("SELECT * FROM users")

データの最初の行をクエリします

result =database.fetch_one( " SELECT * FROM users WHERE ID=:id", value = {"id": 1})

Get cell data

result = database.fetch_val("SELECT Name FROM users WHERE ID =:id", value = {"id": 1})

複数行のデータを取得

result =database.fetch_many(query="SELECT * FROM users",values=[ {'id':1}, {'id':2})

データが存在しない場合は、None を返します

result =database.fetch_optional(query="SELECT * FROM users WHERE ID= :id", value={"id": 3})

任意のクエリを実行します (挿入された行の数を返します)

result = await database.execute("INSERT INTOユーザー (ID, 名前,年齢,電子メール) 値 (:id,:名前,:年齢,:電子メール)",value={"id":5, "名前":"ジョン","年齢":25," email":" [email protected]"})

バッチ モードでクエリを実行します (挿入された行の数を返します)

result = await database.execute_many("INSERT INTO users (ID ,名前,年齢, メールアドレス) VALUES (:id,:名前,:年齢,:メールアドレス)",values=[{"id":5, "名前":"ジョン","年齢":25,"メールアドレス" :"[email protected]"},{"id":6,"name":"Jack", "age":26,"email":"[email protected]"}])

使用データを処理する非同期イテレータ

database.connection() との接続としての非同期:
connection.transaction() との非同期:

   async for row in connection.iterate(query="SELECT * FROM users"):
      print(row)
4.使用事务

Databases库还提供了事务管理的机制。我们可以使用异步with语句来绑定事务。如果with语句内的所有操作成功完成,则会提交事务。否则,事务将被回滚。

database.transaction() との非同期:
query = "INSERT INTO users (ID,Name,Age,Email) VALUES (:id,:name,:age,:email)"
value = {"id": 5, "name": "Hassen", "age": 26 、"email": "[email protected]"}
await database.execute(query, value)

クエリ = "user1 (ID,名前,年齢,電子メール) 値に挿入 (:id,:名前,:年齢,:電子メール)"
値 = {"id": 6, "名前": " Fatima", "age": 22, "email": "[email protected]"}
await database.execute(query,values)

上記は、データベース ライブラリの詳細な紹介です。 Python ORM フレームワーク。 Databases ライブラリは、新世代の Python ORM フレームワークであり、簡潔なコードの最適化、非同期通信操作、接続プールなど、開発者の開発効率を大幅に向上させ、優れたパフォーマンスを促進する多くの優れた機能を備えています。 Databases ライブラリは Python 開発の世界ではまだ比較的新しいものですが、コミュニティからの注目と認識がますます高まっています。私たちは、このライブラリが Python 開発者の将来の作業においてますます重要な役割を果たすことになると信じています。

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

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