ORM (オブジェクト リレーショナル マッピング) は、リレーショナル データベースのテーブル データをプログラミング言語のオブジェクトにマッピングするプログラミング テクノロジで、プログラム開発者がオブジェクト指向の方法でデータベースを操作できるようにします。 Flask-SQLAlchemy は、リレーショナル データベースでの Python プログラムの操作を大幅に簡素化できる強力な ORM フレームワークです。
この記事では、Flask-SQLAlchemy フレームワークの使用法を例を通して詳しく紹介します。
Flask-SQLAlchemy を学習する前に、まず Flask と SQLAlchemy モジュールをインストールする必要があります。 Python 環境で pip コマンドを使用してインストールできます。
pip install Flask
pip install SQLAlchemy
Flask を作成する前に、プロジェクトの永続ストレージとして MySQL データベースを構成します。 -SQLAlchemy オブジェクト、次のパラメータを渡すだけです:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost:3306/test'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
app.config を呼び出して、Flask アプリケーション インスタンスの構成パラメーターを設定します。SQLALCHEMY_DATABASE_URI パラメーターは、接続されたデータベースの種類、ユーザー名、パスワード、IP アドレス、ポート番号、データベース名、およびその他の情報を指定するために使用されます。
データ モデルの定義
まず、ORM のマッピング オブジェクトであるデータ モデルを定義する必要があります。学生情報を例として、Student クラスを定義します。
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
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 オブジェクトのリストを辞書リストに変換して返します。
以上がPython での ORM フレームワーク Flask-SQLAlchemy の実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。