ホームページ  >  記事  >  バックエンド開発  >  PythonによるORMフレームワークFlask-SQLAlchemyの詳細説明

PythonによるORMフレームワークFlask-SQLAlchemyの詳細説明

WBOY
WBOYオリジナル
2023-06-09 23:48:072004ブラウズ

Flask-SQLAlchemy は SQLAlchemy に基づく ORM (オブジェクト リレーショナル マッピング) フレームワークであり、Flask アプリケーションに適しています。 ORM フレームワークは、基礎となるデータベース操作を保護し、Python プログラミング インターフェイスを提供するため、開発者は SQL ステートメントを記述せずに、Python コードを直接使用してデータベースを操作できます。

この記事では、データベースへの接続、テーブルの作成、データの挿入、更新、削除、データのクエリの方法など、Flask-SQLAlchemy フレームワークの使用方法を詳しく紹介します。

データベースへの接続

Flask-SQLAlchemy を使用する前に、まず Flask でデータベース接続を設定する必要があります。具体的な方法は以下の通りです。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接信息'  # 数据库连接信息
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 是否追踪对象的修改
db = SQLAlchemy(app)

このうち、SQLALCHEMY_DATABASE_URIはデータベース接続情報です。 SQLite を使用している場合、形式は sqlite:///file path です。MySQL の場合、形式は mysql pymysql://username:password@hostname/databasename( pymysql は MySQL への接続に使用される Python ライブラリです); PostgreSQL の場合、形式は postgresql://ユーザー名:パスワード@ホスト名/データベース名 です。

SQLALCHEMY_TRACK_MODIFICATIONS は、オブジェクトへの変更を追跡するかどうかを示します。 True に設定すると、オブジェクトの状態がチェックされ、各リクエストの終了時にデータベースに書き込まれます。この機能はデバッグやパフォーマンスの最適化に使用できますが、ある程度のオーバーヘッドが発生します。したがって、運用環境ではこれをオフにすることをお勧めします。

テーブルの作成

Flask-SQLAlchemy は、Python クラスを介したテーブルの定義をサポートしています。各クラスはデータベース テーブルに対応し、クラス内の属性はデータベース テーブルのフィールドに対応します。

以下は例です:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

その中で、db.Model はすべてのモデル クラスの基本クラスであり、このクラスがデータベース モデルであることを示します。 id、ユーザー名、および電子メールはこのテーブルのフィールドであり、id は主キーであり、ユーザー名と電子メールは両方とも一意であり、空にすることはできません。 __repr__() メソッドは、デバッグを容易にするためにオブジェクトを出力するために使用されます。

このテーブルを作成するには、次のコマンドを実行するだけです:

from app import db
db.create_all()

これにより、データベースに User という名前のテーブルが作成されます。すでに存在する場合、再度作成されることはありません。作成する必要があるテーブルが複数ある場合は、db.create_all() コマンドを使用して同じ場所にテーブルを作成できます。

データの挿入

データベースにデータを挿入するには、クラス インスタンスを作成し、add() メソッドと commit() メソッドを呼び出すだけです。

from app import db
from app.models import User

user = User(username='test', email='test@test.com')
db.session.add(user)
db.session.commit()

上記のコードでは、最初に User オブジェクトが作成され、次にデータベース セッションに追加されます。最後に、 commit() メソッドを呼び出してトランザクションをコミットし、データをデータベースに保存します。

データの更新

データの更新はデータの挿入と似ており、更新するデータをクエリし、その属性を変更して送信するだけです。

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
user.email = 'new_test@test.com'
db.session.commit()

上記のコードでは、更新する User オブジェクトが最初にユーザー名に基づいてクエリされ、次に電子メール属性が変更され、変更が送信されます。

データの削除

はデータの更新と似ており、最初に削除するデータをクエリし、次に delete() メソッドを呼び出してデータを削除するだけです。

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
db.session.delete(user)
db.session.commit()

上記のコードでは、削除する User オブジェクトが最初にユーザー名に基づいてクエリされ、次に delete() メソッドが呼び出されて削除されます。

クエリ データ

Flask-SQLAlchemy は、条件によるクエリ、並べ替え、ページングなど、さまざまなクエリ方法をサポートしています。

条件によるクエリ

条件によるクエリは最も一般的な方法です。 query.filter() メソッドを使用してクエリ条件を指定できます。サンプル コードは次のとおりです:

from app import db
from app.models import User

# 查询所有
users = User.query.all()

# 条件查询
users = User.query.filter_by(username='test').all()

上記のコードでは、コードの最初の行は User テーブル内のすべてのデータをクエリし、コードの 2 行目は username='test' 条件に従ってデータをクエリします。 。

クエリの並べ替え

order_by() メソッドを使用して、クエリの結果を並べ替えることができます。サンプル コードは次のとおりです:

from app import db
from app.models import User

# 按名称排序(升序)
users = User.query.order_by(User.username).all()

# 按名称排序(降序)
users = User.query.order_by(User.username.desc()).all()

上記のコードでは、コードの最初の行はクエリ結果をユーザー名の昇順に並べ替え、コードの 2 行目はクエリ結果をユーザー名の降順に並べ替えます。

ページング クエリ

paginate() メソッドを使用してページング クエリを実装できます。サンプル コードは次のとおりです:

from app import db
from app.models import User

# 每页2条,查询第1页
users = User.query.paginate(1, 2, False)

# 查询第一页
users = User.query.order_by(User.username).paginate(1, 10, False)

上記のコードでは、コードの 1 行目はページ 1 の 2 個のデータをクエリし、コードの 2 行目はユーザー名でソートされたページ 1 の 10 個のデータをクエリします。

概要

Flask-SQLAlchemy は、データベースのクエリと操作のための強力なインターフェイスを提供する強力な ORM フレームワークで、開発者がデータベースを迅速かつ簡単に操作できるようにします。この記事では、テーブルの作成、データの挿入、更新、削除、クエリなど、Flask-SQLAlchemy の使用方法を紹介します。この記事が、読者が Flask-SQLAlchemy をよりよく理解し、適用するのに役立つことを願っています。

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

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