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

Python での ORM フレームワーク Flask-SQLAlchemy の実践

WBOY
WBOYオリジナル
2023-06-10 22:57:051877ブラウズ

ORM (オブジェクト リレーショナル マッピング) は、リレーショナル データベースのテーブル データをプログラミング言語のオブジェクトにマッピングするプログラミング テクノロジで、プログラム開発者がオブジェクト指向の方法でデータベースを操作できるようにします。 Flask-SQLAlchemy は、リレーショナル データベースでの Python プログラムの操作を大幅に簡素化できる強力な ORM フレームワークです。

この記事では、Flask-SQLAlchemy フレームワークの使用法を例を通して詳しく紹介します。

  1. 環境構成

Flask-SQLAlchemy を学習する前に、まず Flask と SQLAlchemy モジュールをインストールする必要があります。 Python 環境で pip コマンドを使用してインストールできます。

pip install Flask
pip install SQLAlchemy

  1. データベース構成

Flask を作成する前に、プロジェクトの永続ストレージとして MySQL データベースを構成します。 -SQLAlchemy オブジェクト、次のパラメータを渡すだけです:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

最初のパラメータ: flask Application example

2 番目のパラメータ: データベース接続 URI

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost:3306/test'

Turnプログラムの実行効率を向上させるために SQLALCHEMY_TRACK_MODIFICATIONS オプションをオフにします

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db オブジェクトを初期化します

db = SQLAlchemy(app)

app.config を呼び出して、Flask アプリケーション インスタンスの構成パラメーターを設定します。SQLALCHEMY_DATABASE_URI パラメーターは、接続されたデータベースの種類、ユーザー名、パスワード、IP アドレス、ポート番号、データベース名、およびその他の情報を指定するために使用されます。

  1. ORM 実装

データ モデルの定義

まず、ORM のマッピング オブジェクトであるデータ モデルを定義する必要があります。学生情報を例として、Student クラスを定義します。

from datetime import datetime
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

SQLAlchemy ORM design model

class Student(db.Model):

# 定义表名
__tablename__ = 'student'
# 定义表结构,其中id为主键,自增长
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(20), nullable=False)
gender = db.Column(db.String(2), nullable=False)
birthday = db.Column(db.Date, default=datetime.now())
address = db.Column(db.String(200), nullable=False)

# 类对象序列化成字典
def to_dict(self):
    return {c.name: getattr(self, c.name, None) for c in self.__table__.columns}

Student クラスでは、__tablename__、id、名前、性別、誕生日、住所のテーブル構造を定義します。このうち、__tablename__ はテーブル名を指定するために使用され、id は主キーを指定して自動的に拡張するために使用され、フィールド名、性別、誕生日、住所は生徒の名前、性別、誕生日、住所に関する情報を格納するために使用されます。住所。

#追加、削除、変更、およびクエリの操作

次に、追加、削除、変更、およびクエリの操作を実装します。

(1) 学生情報の追加

@app.route(' /add',messages=['POST'])

def add_student():

student = Student()
student.name = request.form.get('name')
student.gender = request.form.get('gender')
student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date()
student.address = request.form.get('address')
db.session.add(student)
db.session.commit()
return jsonify({'code': 200, 'msg': 'add student success.'})

まず、request.form.get() を通じて送信されたフォーム データを取得します。次に Student オブジェクトを作成して属性値を設定し、最後に db.session.add() を使用してオブジェクトをデータベースに追加し、db.session.commit() を使用してトランザクションをコミットします。

(2) 学生情報の削除

@app.route('/delete/3e2f7d559aac0f0aeba61111f4764f61',methods=['DELETE'])

def delete_student(id ):

student = Student.query.get(id)
if student:
    db.session.delete(student)
    db.session.commit()
    return jsonify({'code': 200, 'msg': 'delete student success.'})
else:
    return jsonify({'code': 404, 'msg': 'student not found.'})

学生 ID パラメータを渡し、query.get() メソッドを通じて学生インスタンスを取得し、db.session.delete() メソッドを使用してそれをデータベースから削除し、 db.session .commit() を介してデータベースがトランザクションをコミットします。

(3) 学生情報の変更

@app.route('/update/3e2f7d559aac0f0aeba61111f4764f61',methods=['PUT'])

def update_student(id ):

student = Student.query.get(id)
if student:
    student.name = request.form.get('name')
    student.gender = request.form.get('gender')
    student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date()
    student.address = request.form.get('address')
    db.session.commit()
    return jsonify({'code': 200, 'msg': 'update student success.'})
else:
    return jsonify({'code': 404, 'msg': 'student not found.'})

同様に、学生 ID パラメータに基づいて学生インスタンスを取得し、学生情報を変更した後、db.session.commit() を使用してトランザクションを送信します。

(4) 学生情報のクエリ

@app.route('/search')

def search_student():

students = Student.query.all()
if students:
    return jsonify({'code': 200, 'msg': 'search student success.', 'data': [student.to_dict() for student in students]})
else:
    return jsonify({'code': 404, 'msg': 'student not found.'})

query.all()メソッドを使用Student テーブル内のすべての学生情報をクエリし、リスト内包表記を使用して Student オブジェクトのリストを辞書リストに変換して返します。

    概要
Flask-SQLAlchemy は、データベース操作用の Python コードをよりシンプルで読みやすくできる非常に強力な ORM フレームワークです。この記事では、例を通じて Flask-SQLAlchemy の使用方法を詳しく紹介します。

実際の開発では、この記事と同様の方法でデータ モデルを定義し、追加、削除、変更、クエリ操作を実装できます。これらの操作の複雑さは非常に低く、Flask-SQLAlchemy フレームワークを使用することで、開発効率が向上し、プログラムのメンテナンス コストが削減されます。

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

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