目次
最初のパラメータ: flask Application example
2 番目のパラメータ: データベース接続 URI
Turnプログラムの実行効率を向上させるために SQLALCHEMY_TRACK_MODIFICATIONS オプションをオフにします
db オブジェクトを初期化します
SQLAlchemy ORM design model
ホームページ バックエンド開発 Python チュートリアル Python での ORM フレームワーク Flask-SQLAlchemy の実践

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

Jun 10, 2023 pm 10:57 PM
python オームフレームワーク flask-sqlalchemy

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/',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/',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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

VSCODE拡張機能は悪意がありますか? VSCODE拡張機能は悪意がありますか? Apr 15, 2025 pm 07:57 PM

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

See all articles