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中文網其他相關文章!