python オブジェクト リレーショナル マッピング (ORM) Framework は、データベース## 内の関係をマッピングできます。 # データは Python オブジェクトにシームレスにマッピングされ、データベースとの対話が簡素化されます。最も複雑なクエリでも、ORM を使用すると簡単かつ効率的に実行できます。
1.ネストされたクエリ:
ネストされたクエリを使用すると、1 つのクエリの結果を別のクエリへの入力として使用できます。 ORM では、ネストされたフィルターを使用してこれを実現できます。たとえば、filter() メソッドを使用してサブクエリをネストし、特定の条件に一致するレコードを検索できます。
######例:######
2. 結合クエリ:
結合クエリは、複数のテーブルのレコードを結合します。 ORM では、
join() メソッドを使用してこれを実現できます。たとえば、join()
メソッドを使用して 2 つのテーブルを結合し、特定の著者の書籍を検索できます。
######例:######
sqlalchemyインポートと_から、列
sqlalchemy.orm からセッションメーカーをインポート、関係
# ORM セッションを作成する
セッション = セッションメーカー()
セッション = セッション()
# Book テーブルと Author テーブル
クラスブック(ベース):
id = 列(整数、primary_key=True)
タイトル = 列(文字列)
author_id = Column(整数,ForeignKey("authors.id"))
# 著者テーブル
クラス作成者(ベース):
id = 列(整数、primary_key=True)
名前 = 列(文字列)
# 結合クエリを使用して、著者名が「John」である書籍タイトルをすべて検索します
query = session.query(Book.title).join(Book.author).filter(Author.name == "John")
3. 集計関数:
集計関数は、合計、平均、最大値の検索など、複数の値を 1 つの値に結合します。 ORM では、sum()
、avg()、
max() などの集計関数を使用してこれを実現できます。たとえば、sum()
関数を使用して、特定の著者による書籍の合計数を計算できます。
######例:######
sqlalchemyインポートと_から、列
sqlalchemy.orm からセッションメーカーをインポート、関係
# ORM セッションを作成する
セッション = セッションメーカー()
セッション = セッション()
# Book テーブルと Author テーブル
クラスブック(ベース):
id = 列(整数、primary_key=True)
タイトル = 列(文字列)
author_id = Column(整数,ForeignKey("authors.id"))
# 著者テーブル
クラス作成者(ベース):
id = 列(整数、primary_key=True)
名前 = 列(文字列)
# 集計関数を使用して特定の著者による書籍の総数を計算する
query = session.query(著者名).group_by(著者).having(func.count(Book.id) > 1)
4. 動的クエリ:
動的クエリを使用すると、実行時にクエリを構築できます。 ORM では、
dynamic()
dynamic() 関数を使用して、特定のフィルター条件を含むクエリを作成できます。 ######例:######
from sqlalchemy import and_、列、リテラル sqlalchemy.orm からセッションメーカーをインポート、関係 # ORM セッションを作成する セッション = セッションメーカー() セッション = セッション() # Book テーブルと Author テーブル クラスブック(ベース): id = 列(整数、primary_key=True) タイトル = 列(文字列) author_id = Column(整数,ForeignKey("authors.id")) # 著者テーブル クラス作成者(ベース): id = 列(整数、primary_key=True) 名前 = 列(文字列) # 動的クエリを使用して、特定のフィルター条件を含むクエリを作成します query = session.query(Book).filter(literal(True).in_( session.query(1).filter(Book.title == "本のタイトル") )) 開発者
は、ORM のこれらの機能を効果的に活用することで、SQL ステートメントを直接記述することなく、複雑で効率的なクエリを構築できます。これにより、データベースの対話が簡素化され、可読性と保守性が向上します。以上がPython ORM を使用して複雑なクエリを処理する技術の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。