首頁 後端開發 Python教學 Python中的ORM框架Flask-SQLAlchemy詳解

Python中的ORM框架Flask-SQLAlchemy詳解

Jun 09, 2023 pm 11:48 PM
flask sqlalchemy orm框架

Flask-SQLAlchemy是一個基於SQLAlchemy的ORM(Object Relational Mapping)框架,適用於Flask應用程式。 ORM框架屏蔽了底層資料庫的操作,提供了一個Python程式接口,使得開發者可以直接使用Python程式碼操作資料庫,而不用寫SQL語句。

本文將詳細介紹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:///檔案路徑;如果是MySQL,則格式為mysql pymysql://使用者名稱:密碼@主機名稱/資料庫名稱(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、username、email是該表的字段,其中id是主鍵,username和email都是唯一的,不能為空。 __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對象,然後修改了email屬性並提交了修改。

刪除資料

和更新資料類似,只需要先查詢出要刪除的數據,然後再呼叫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表中的所有資料;第二行程式碼依照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()
登入後複製

上述程式碼中,第一行程式碼依照username升序排列查詢結果;第二行程式碼依照username降序排列查詢結果。

分頁查詢

可以使用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頁的2條資料;第二行程式碼查詢了依照username排序的第1頁的10條資料。

總結

Flask-SQLAlchemy是一個強大的ORM框架,提供了強大的查詢和操作資料庫的接口,使得開發者可以快速方便地操作資料庫。本文介紹了Flask-SQLAlchemy的使用,包括建立表格、插入、更新、刪除和查詢資料。希望本文能幫助讀者更能理解並應用Flask-SQLAlchemy。

以上是Python中的ORM框架Flask-SQLAlchemy詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
如何利用React和Flask建構簡單易用的網路應用 如何利用React和Flask建構簡單易用的網路應用 Sep 27, 2023 am 11:09 AM

如何利用React和Flask建構簡單易用的網路應用引言:隨著網路的發展,網路應用的需求也越來越多樣化和複雜化。為了滿足使用者對於易用性和效能的要求,使用現代化的技術堆疊來建立網路應用變得越來越重要。 React和Flask是兩個在前端和後端開發中非常受歡迎的框架,它們可以很好的結合在一起,用來建立簡單易用的網路應用。本文將詳細介紹如何利用React和Flask

安裝Flask框架指南:詳細步驟可協助您正確安裝Flask 安裝Flask框架指南:詳細步驟可協助您正確安裝Flask Feb 18, 2024 pm 10:51 PM

Flask框架安裝教學:一步步教你如何正確安裝Flask框架,需要具體程式碼範例引言:Flask是一款簡潔且靈活的PythonWeb開發框架。它易於學習、易於使用,並且具有強大的功能。本文將帶領您一步步正確地安裝Flask框架,並提供詳細的程式碼範例供參考。第一步:安裝Python在安裝Flask框架之前,首先需要確保您的電腦上安裝了Python。您可以從P

Django vs. Flask:Python Web框架的比較分析 Django vs. Flask:Python Web框架的比較分析 Jan 19, 2024 am 08:36 AM

Django和Flask都是PythonWeb框架中的佼佼者,它們都有著自己的優點和適用場景。本文將對這兩個框架進行比較分析,並提供具體的程式碼範例。開發簡介Django是一個全功能的Web框架,它的主要目的是為了快速開發複雜的Web應用。 Django提供了許多內建的功能,例如ORM(物件關聯映射)、表單、認證、管理後台等。這些功能使得Django在處理大型

從頭開始,逐步引導您安裝Flask,快速建立個人博客 從頭開始,逐步引導您安裝Flask,快速建立個人博客 Feb 19, 2024 pm 04:01 PM

從零開始,手把手教你安裝Flask和快速建立個人部落格作為一個喜歡寫作的人來說,擁有個人部落格是非常重要的。而Flask作為一個輕量級的PythonWeb框架,可以幫助我們快速建立一個簡潔而功能完善的個人部落格。在本文中,我將從零開始,手把手教你如何安裝Flask並快速建立個人部落格。第一步:安裝Python和pip在開始之前,我們需要先安裝Python和pi

比較Flask應用部署的Gunicorn和uWSGI效能對比 比較Flask應用部署的Gunicorn和uWSGI效能對比 Jan 17, 2024 am 08:52 AM

Flask應用部署:GunicornvsuWSGI的比較引言:Flask作為一種輕量級的PythonWeb框架,受到了許多開發者的喜愛。在將Flask應用程式部署到生產環境時,選擇適合的伺服器閘道介面(ServerGatewayInterface,簡稱SGI)是至關重要的決策。 Gunicorn和uWSGI是兩種常見的SGI伺服器,本文將對它們進行詳細的

Flask vs FastAPI: 高效開發Web API的最佳選擇 Flask vs FastAPI: 高效開發Web API的最佳選擇 Sep 27, 2023 pm 09:01 PM

FlaskvsFastAPI:高效開發WebAPI的最佳選擇引言:在現代的軟體開發中,WebAPI已經成為了不可或缺的一部分。它們能夠提供數據和服務,使得不同的應用程式之間能夠進行通訊和互通。而在選擇開發WebAPI的框架時,Flask和FastAPI是兩個備受關注的選擇。這兩個框架都非常流行,而且各有優勢。在本文中,我們將對Fl

使用Flask和D3.js建立互動式資料視覺化Web應用程式 使用Flask和D3.js建立互動式資料視覺化Web應用程式 Jun 17, 2023 pm 09:00 PM

近年來,數據分析和數據視覺化已經成為了許多行業和領域中不可或缺的技能。對於資料分析師和研究人員來說,將大量的資料呈現在使用者面前並且讓使​​用者能夠透過視覺化手段來了解資料的含義和特徵,是非常重要的。為了滿足這種需求,在網路應用程式中使用D3.js來建立互動式資料視覺化已經成為了一種趨勢。在本文中,我們將介紹如何使用Flask和D3.js建立互動式資料視覺化Web

iBatis與MyBatis的異同比較:主流ORM框架的對比 iBatis與MyBatis的異同比較:主流ORM框架的對比 Feb 19, 2024 pm 07:08 PM

iBatis和MyBatis是兩個主流的ORM(Object-RelationalMapping)框架,它們在設計和使用上有著許多相似之處,也存在一些細微的差別。本文將詳細比較iBatis和MyBatis的異同,並透過具體的程式碼範例來說明它們的特點。一、iBatis與MyBatis的歷史與背景iBatis是ApacheSoftwareFoundat

See all articles