ホームページ バックエンド開発 Python チュートリアル ORM フレームワーク Python でのデータベースの実際

ORM フレームワーク Python でのデータベースの実際

Jun 10, 2023 pm 05:42 PM
実戦 orm databases

近年、Python は効率的で使いやすく柔軟なプログラミング言語となり、Python 開発の分野ではデータベース ORM フレームワークの適用がますます一般的になってきています。 Databases は、MySQL、PostgreSQL、SQLite、Microsoft SQL Server などのさまざまなデータベースをサポートする、シンプルで直感的な軽量の ORM フレームワークです。この記事では、データベース フレームワークと、Python 開発におけるその具体的なアプリケーションについて詳しく紹介します。

1. ORM フレームワークの概念

ORM はオブジェクト リレーショナル マッピングの略で、リレーショナル データベース テーブルと Python オブジェクトの間のマッピングであり、これにより開発者は SQL ステートメントを操作するテクノロジが不要になります。 Python で ORM フレームワークを適用すると、開発者により多くの選択肢が提供され、プログラム開発がより便利になります。

2. Databases フレームワーク

Databases は、Django ORM 開発者の Andrew Goodwin が開発したシンプルな ORM フレームワークで、最大の特徴は軽量で便利で使いやすいことです。 MySQL、PostgreSQL、SQLite、Microsoft SQL Server などのデータベース。

  1. データベース フレームワークのインストール

データベース フレームワークのインストールには、pip を使用してインストールできます。コマンドは次のとおりです:

pip install databases==0.4.*
ログイン後にコピー
  1. データベースへの接続

データベース フレームワークを開発に使用する前に、まずデータベースに接続する必要があります。データベースへの接続に必要なパラメータには、データベースの種類、ホスト名、データベース名、ユーザー名、パスワードなどが含まれます。この開発では、MySQL データベースに接続しようとします。コードは次のとおりです:

import databases

DATABASE_URL = "mysql://user:password@hostname/database_name"

database = databases.Database(DATABASE_URL)
ログイン後にコピー
ログイン後にコピー

ここで、QAQsaaspassword はデータベースに接続するためのパスワード、askdnsadn312as はデータベースに接続するためのユーザー名、localhost です。はデータベースが配置されているホスト名または IP アドレスです。 、my_database はデータベースの名前です。

  1. テーブルと列の作成

データベース フレームワークは、複雑なクエリ ステートメントを作成する SQL 式言語をサポートしているため、開発者は SQL 実行プロセスをより柔軟に制御できます。データベース フレームワークでは、Table クラスを使用してテーブルを作成し、Column クラスを使用して列を作成できます。

テーブル作成コードは次のとおりです:

import sqlalchemy

metadata = sqlalchemy.MetaData()

users = sqlalchemy.Table(
    "users",
    metadata,
    sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True),
    sqlalchemy.Column("username", sqlalchemy.String),
    sqlalchemy.Column("password", sqlalchemy.String),
    sqlalchemy.Column("email", sqlalchemy.String),
)
ログイン後にコピー

ここでは、SQLAlchemy の MetaData オブジェクトを使用し、users テーブルを定義して 4 つのフィールド (id、ユーザー名、パスワード、電子メール) を作成します。

  1. SQL ステートメントの実行

データベース フレームワークには、操作に SQL ステートメントを直接使用する、より柔軟な方法も用意されています。 SQL ステートメントは、execute() メソッドを通じて実行できます。コードは次のとおりです:

result = await database.execute(query)
ログイン後にコピー

query は SQL ステートメントのコードを表し、result は実行結果です。実行が成功すると、辞書が返されます。 type リストで構成され、各辞書は SQL クエリ結果のレコードを表します。

5. データベースでの ORM の使用

データベース フレームワークは、SQL ステートメントを操作するための ORM もサポートしているため、開発者にとってはより便利です。 ORM メソッドは、オブジェクトの関係をデータベースにマップするのに役立ち、コードをより読みやすく、保守しやすくします。

ORM を使用すると、モデルを定義してデータベースを操作できます。コードは次のとおりです:

import sqlalchemy

metadata = sqlalchemy.MetaData()

users = sqlalchemy.Table(
    "users",
    metadata,
    sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True),
    sqlalchemy.Column("username", sqlalchemy.String),
    sqlalchemy.Column("password", sqlalchemy.String),
    sqlalchemy.Column("email", sqlalchemy.String),
)

class UserModel:
    id: int
    username: str
    password: str
    email: str

    __tablename__ = "users"

    query: sq.Select

    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)
ログイン後にコピー

ここでは、データ テーブル オブジェクトを表す UserModel モデル クラスを定義します。簡単な定義を通じて、SQLAlchemy のテーブルと列の定義を完了することができ、その ORM をデータベースにマッピングできるため、便利で高速で保守が容易です。

3. アプリケーションの例

ここでは、データベース フレームワークの具体的な操作を示すために、単純なブログ アプリケーションを例に挙げます。

1. データベースへの接続

次のコードに示すように、データベースへの接続に必要な情報も非常に単純です:

import databases

DATABASE_URL = "mysql://user:password@hostname/database_name"

database = databases.Database(DATABASE_URL)
ログイン後にコピー
ログイン後にコピー

ここでの DATABASE_URL は、 MySQL への接続。データベース システムに接続するためのパラメータ。

2. モデルを定義する

このブログの例では、2 つのデータ モデルを定義する必要があります。1 つは、ブログ投稿オブジェクトを表すブログ モデルです。生成されるコードは次のとおりです。

class Blog:
    id: int
    title: str
    description: str
    content: str

    __tablename__ = "blog"

    query: sq.Select

    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)
ログイン後にコピー

もう 1 つは、ユーザー オブジェクトを表す User モデルです。生成されたコードは次のとおりです:

class User:
    id: int
    name: str
    email: str
    password: str

    __tablename__ = "user"

    query: sq.Select

    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)
ログイン後にコピー
## 同様に、単純な定義を使用して、その ORM を MySQL データベースにマッピングします。に接続します。

3. テーブルの作成

運用しているデータベース システムは MySQL なので、対応するテーブルを作成する必要があります。生成されるコードは次のとおりです:

CREATE TABLE `blog` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(100) DEFAULT NULL,
  `description` varchar(100) DEFAULT NULL,
  `content` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `password` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ログイン後にコピー

4.データの挿入

ORM を使用すると、非常に便利にデータを入力できます。生成されたコードは次のとおりです:

async def create_blog_post(title: str, description: str, content: str):
    query = blog.insert().values(title=title, description=description, content=content)
    return await database.execute(query)

async def create_user(name: str, email: str, password: str):
    query = user.insert().values(name=name, email=email, password=password)
    return await database.execute(query)
ログイン後にコピー

ここでは、insert() メソッドを使用してデータ挿入操作を完了します。読み取り可能。開発者がコードをより適切に保守できるようにするため。

5. クエリ データ

次のコードに示すように、データベース フレームワークはクエリ操作もサポートしています:

async def get_blog_post(id: int):
    query = blog.select().where(blog.c.id == id)
    return await database.fetch_one(query)

async def get_all_users():
    query = user.select()
    return await database.fetch_all(query)

async def get_users_by_email(email: str):
    query = user.select().where(user.c.email == email)
    return await database.fetch_all(query)
ログイン後にコピー
ここでは、select() メソッドを使用して条件を結合します。トラバース時に多数のペアを返す生成された A デバイスを取得します。クエリ データを使用してデータをフィルタリングおよび並べ替えることもできます。

要約

データベース フレームワークは、Python 開発者向けの柔軟で使いやすい、軽量の ORM フレームワークです。さまざまなデータベースを簡単にサポートし、開発者がデータの保存、操作、フィルター、並べ替えなどを容易に行うことができます。この記事では、データベースへの接続からモデル操作の定義、データ挿入やクエリ操作に至るまで、データベース フレームワークの柔軟性と使いやすさを示し、開発者が Python プログラムをより効率的に開発しやすくします。

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? May 07, 2024 am 08:39 AM

PHP でのデータベース操作は、オブジェクトをリレーショナル データベースにマップする ORM を使用して簡素化されます。 Laravel の EloquentORM を使用すると、オブジェクト指向構文を使用してデータベースと対話できます。モデル クラスを定義したり、Eloquent メソッドを使用したり、実際にブログ システムを構築したりすることで ORM を使用できます。

PHP 実践: フィボナッチ数列をすばやく実装するコード例 PHP 実践: フィボナッチ数列をすばやく実装するコード例 Mar 20, 2024 pm 02:24 PM

PHP の実践: フィボナッチ数列をすばやく実装するためのコード例 フィボナッチ数列は、数学では非常に興味深い一般的な数列です。次のように定義されています: 最初と 2 番目の数値は 0 と 1、3 番目からは数値で始まり、それぞれの数値前の 2 つの数値の合計です。フィボナッチ数列の最初のいくつかの数値は、0、1、1.2、3、5、8、13、21 などです。 PHP では、再帰と反復を通じてフィボナッチ数列を生成できます。以下ではこの2つを紹介していきます

PHP のオブジェクト リレーショナル マッピングとデータベース抽象化レイヤーによってコードの可読性が向上する仕組み PHP のオブジェクト リレーショナル マッピングとデータベース抽象化レイヤーによってコードの可読性が向上する仕組み May 06, 2024 pm 06:06 PM

回答: ORM (オブジェクト リレーショナル マッピング) と DAL (データベース抽象化レイヤー) は、基礎となるデータベース実装の詳細を抽象化することでコードの可読性を向上させます。詳細な説明: ORM はオブジェクト指向のアプローチを使用してデータベースと対話し、コードをアプリケーション ロジックに近づけます。 DAL は、データベース ベンダーに依存しない共通のインターフェイスを提供し、さまざまなデータベースとの対話を簡素化します。 ORM と DAL を使用すると、SQL ステートメントの使用が減り、コードがより簡潔になります。実際のケースでは、ORM と DAL により製品情報のクエリが簡素化され、コードの可読性が向上します。

Hibernate はポリモーフィック マッピングをどのように実装しますか? Hibernate はポリモーフィック マッピングをどのように実装しますか? Apr 17, 2024 pm 12:09 PM

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

Hibernate ORM フレームワークの欠点は何ですか? Hibernate ORM フレームワークの欠点は何ですか? Apr 18, 2024 am 08:30 AM

HibernateORM フレームワークには次の欠点があります。 1. クエリ結果とエンティティ オブジェクトをキャッシュするため、メモリ消費量が大きくなります。 2. アーキテクチャと構成についての深い理解が必要になるため、読み込みが遅くなり、予期しない遅延が発生します。 5. 多数のエンティティが同時にロードまたは更新されると、パフォーマンスのボトルネックが発生します。その結果、データベース間で差異が生じます。

Java Hibernate フレームワークの ORM メカニズムとは何ですか? Java Hibernate フレームワークの ORM メカニズムとは何ですか? Apr 17, 2024 pm 02:39 PM

Hibernate は、Java オブジェクトとリレーショナル データベース間のマッピングのための JavaORM フレームワークです。その ORM メカニズムには次の手順が含まれます。 注釈/構成: オブジェクト クラスは、マップされたデータベース テーブルと列を指定する注釈または XML ファイルでマークされます。セッションファクトリー: Hibernate とデータベース間の接続を管理します。セッション: データベースへのアクティブな接続を表し、クエリおよび更新操作を実行するために使用されます。永続性: save() または update() メソッドを通じてデータをデータベースに保存します。クエリ: 基準と HQL を使用して、データを取得するための複雑なクエリを定義します。

Golang実戦:データエクスポート機能の実装ヒントを共有 Golang実戦:データエクスポート機能の実装ヒントを共有 Feb 29, 2024 am 09:00 AM

データ エクスポート機能は、実際の開発、特にバックエンド管理システムやデータ レポートのエクスポートなどのシナリオで非常に一般的な要件です。この記事では、Golang 言語を例として、データ エクスポート機能の実装スキルを共有し、具体的なコード例を示します。 1. 環境の準備 開始する前に、Golang 環境がインストールされており、Golang の基本的な構文と操作に精通していることを確認してください。さらに、データ エクスポート機能を実装するには、github.com/360EntSec などのサードパーティ ライブラリの使用が必要になる場合があります。

Java 開発の実践: Qiniu クラウド ストレージ サービスを統合してファイルのアップロードを実現する Java 開発の実践: Qiniu クラウド ストレージ サービスを統合してファイルのアップロードを実現する Jul 06, 2023 pm 06:22 PM

Java 開発実践: Qiniu クラウド ストレージ サービスを統合してファイル アップロードを実装する はじめに クラウド コンピューティングとクラウド ストレージの発展に伴い、ストレージと管理のためにファイルをクラウドにアップロードする必要があるアプリケーションがますます増えています。クラウド ストレージ サービスの利点は、高い信頼性、拡張性、柔軟性です。この記事では、Java 言語開発の使用方法、Qiniu クラウド ストレージ サービスの統合方法、およびファイル アップロード機能の実装方法を紹介します。 Qiniu Cloud について Qiniu Cloud は、中国の大手クラウド ストレージ サービス プロバイダーであり、包括的なクラウド ストレージおよびコンテンツ配信サービスを提供しています。ユーザーは Qiniu Yunti を使用できます

See all articles