首頁  >  文章  >  後端開發  >  Python中的ORM框架Flask-SQLAlchemy詳解

Python中的ORM框架Flask-SQLAlchemy詳解

WBOY
WBOY原創
2023-06-09 23:48:071961瀏覽

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