ホームページ  >  記事  >  バックエンド開発  >  ORM フレームワーク Python での Tortoise ORM の実践

ORM フレームワーク Python での Tortoise ORM の実践

WBOY
WBOYオリジナル
2023-06-10 18:05:582820ブラウズ

Tortoise ORM は、Python 言語に基づいて開発された非同期 ORM フレームワークであり、Python 非同期アプリケーションでリレーショナル データベースを管理するために使用できます。

この記事では、Tortoise ORM フレームワークを使用してデータを作成、読み取り、更新、削除する方法を紹介し、リレーショナル データベースから単純なクエリと複雑なクエリを実行する方法も学習します。

準備

このチュートリアルを開始する前に、Python (Python3.6 を推奨) をインストールし、Tortoise ORM フレームワークをインストールする必要があります。

次のコマンドを使用して、pip 経由で Tortoise ORM フレームワークをインストールできます:

pip install tortoise-orm

次に、データベースとモデル構造をセットアップします。

データベース接続の作成

Tortoise ORM を使用してデータベース操作を実行するには、最初にデータベースに接続する必要があります。このチュートリアルでは、SQLite データベースを使用します。

Tortoise ORM は、環境変数または .config ファイルを使用してデータベース接続情報を管理します。 .env という名前のファイルと次の構成を作成して、データベース接続を実現します。

DATABASE_URL=sqlite://db.sqlite3

ここで、db.sqlite3 は、作成する新しいデータベースのファイル名です。

同時に、コード内で関数を使用して Tortoise ORM を初期化する必要もあります:

import os
from dotenv import load_dotenv
from tortoise import Tortoise

# 加载环境变量
load_dotenv()

async def init_db():
    await Tortoise.init(config={
        'connections': {
            'default': os.getenv('DATABASE_URL')
        },
        'apps': {
            'models': {
                'models': ['app.models',],
                'default_connection': 'default'
            }
        }
    })
    await Tortoise.generate_schemas()

上記のコードでは、環境変数を使用してデータベース接続情報を取得し、これを Tortoise ORM に初期化します。次に、Tortoise.generate_schemas() メソッドを呼び出して、定義されたモデルに対応するデータ テーブルを生成します。

上記の操作が完了したら、モデルの作成を開始できます。

モデルの作成

このチュートリアルでは、タイトル、コンテンツ、作成時間、更新時間、作成者を含む単純なブログ モデルを作成します。

from tortoise import fields
from tortoise.models import Model

class Blog(Model):
    id = fields.IntField(pk=True)
    title = fields.CharField(max_length=100)
    content = fields.TextField()
    created_at = fields.DatetimeField(auto_now_add=True)
    updated_at = fields.DatetimeField(auto_now=True)
    author = fields.CharField(max_length=100)

上記のコードのブログ モデルでは、Model 基本クラスを使用し、いくつかのフィールド idtitle、## を作成します。 #contentcreated_atupdated_at、および authorpk=True は、id フィールドが主キーであることを指定します。 auto_now_add=Trueauto_now=True は、created_at フィールドと updated_at フィールドがそれぞれ作成時と更新時に自動的に更新されるように指定します。

モデルを正常に定義できたので、CRUD 操作に Tortoise ORM を使用する方法を学びましょう。

データの読み取りと作成

Tortoise ORM を使用したデータの読み取りと作成は非常に簡単です。サンプル コードを次に示します。

from app.models import Blog

# 创建一个新博客
blog = await Blog.create(title='Tortoise ORM', content='使用Tortoise ORM操作数据库非常方便', author='Alice')

# 读取所有博客
blogs = await Blog.all()
for blog in blogs:
    print(blog.title)

# 根据标题读取指定博客
blog = await Blog.get(title='Tortoise ORM')
print(blog.content)

上記のコードでは、## を使用しました。 #Blog.create()

メソッドは新しいブログを作成し、Blog.all() メソッドを使用してすべてのブログを読み取り、Blog.get() メソッドを使用します。タイトルに基づいて指定されたブログを読み取ります。 データの更新と削除

Tortoise ORM には、データを更新および削除するメソッドも用意されています。以下にサンプル コードを示します。

# 更新博客的内容
blog.content = 'Tortoise ORM提供了丰富的API来管理数据库'
await blog.save()

# 删除指定的博客
await Blog.filter(title='Tortoise ORM').delete()

上記のコードでは、

save()

メソッドと filter() および # を使用してブログのコンテンツを更新しました。 ##delete()このメソッドは、タイトルに基づいて指定されたブログを削除します。 複雑なクエリの実行

基本的な CRUD 操作に加えて、Tortoise ORM では複雑なクエリの実行も可能です。以下に例をいくつか示します。

# 使用where子句查询特定日期创建的博客
blogs = await Blog.filter(created_at__date='2021-07-12').all()

# 使用order_by子句将博客按更新日期升序排列
blogs = await Blog.all().order_by('updated_at')

# 连接多个过滤器查询具有特定条件的博客
blogs = await Blog.all().filter(title__contains='ORM', author__icontains='Alice')

上記のコードでは、

filter()

all()order_by() メソッドを組み合わせて使用​​しました。いくつかのクエリパラメータを使用します。 created_at__datetitle__containsauthor__icontains などを使用して、複雑なクエリを実行します。 結論

このチュートリアルでは、Tortoise ORM フレームワークを使用して CRUD 操作を実装し、データベースを初期化してモデルを作成し、複雑なデータベース クエリを実行する方法を学びました。ご覧のとおり、Tortoise ORM を使用すると、Python 非同期アプリケーションでのデータベース管理が非常にシンプルかつ直感的になります。

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

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