Flask ORM是一個輕量級的Python Web框架,它的核心是對象關係映射(ORM)系統。使用ORM,開發人員可以使用Python代碼來操作數據庫,而不需要直接使用SQL語句。FlaskORM提供了簡單而強大的API,使您可以輕鬆地創建,查詢,更新和刪除數據庫記錄。在本指南中,我們將介紹FlaskORM的各個方面。
一、連接到數據庫
要連接到數據庫,您需要首先在您的應用程序中設置連接字符串。以下示例演示如何設置SQLite數據庫的連接字符串。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)
這將創建一個SQLite數據庫,並將其保存在名為「example.db」的文件中。您可以將連接字符串配置為連接到其它數據庫引擎,如MySQL或PostgreSQL。
二、定義模型
在FlaskORM中,您可以通過定義模型類來定義數據庫表,每個類變量對應一個表中的列。以下示例演示如何定義一個簡單的模型:
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(120))
body = db.Column(db.Text)
pub_date = db.Column(db.DateTime, default=datetime.utcnow)
def __repr__(self):
return f""
這裡我們定義了一個簡單的Post模型,它包含了id,title,body和pub_date幾個屬性。其中id為主鍵,title和body為字符串類型,pub_date為日期時間類型。__repr__方法定義了打印Post對象時應該怎麼顯示。
三、創建表格
在FlaskORM中,您可以使用db.create_all()方法來創建所有定義的模型所對應的表格。以下示例演示如何為我們上面定義的Post模型創建表格:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)
from models import Post
db.create_all()
在運行上面的代碼之後,FlaskORM將自動為Post模型創建一個名為「post」的表格。
四、添加、刪除、編輯記錄
要添加一個新記錄,您可以創建一個新的模型實例並將其添加到數據庫會話中:
from models import Post
from datetime import datetime
post = Post(title='Hello World', body='My first blog post!', pub_date=datetime.utcnow())
db.session.add(post)
db.session.commit()
要刪除一條記錄,您可以使用delete()方法,如下所示:
from models import Post
post = Post.query.filter_by(id=1).first()
db.session.delete(post)
db.session.commit()
要編輯記錄,您只需獲取記錄,然後修改其中一些屬性即可:
from models import Post
post = Post.query.filter_by(id=1).first()
post.title = 'New Title'
db.session.commit()
五、查詢記錄
在FlaskORM中,您可以使用db.session.query()方法執行查詢,可以使用filter_by(),filter(),limit(),order_by()等方法來過濾和排序結果。以下示例演示如何查詢所有的Post記錄:
from models import Post
posts = Post.query.all()
for post in posts:
print(post.title)
您也可以使用filter_by()方法來過濾結果:
from models import Post
posts = Post.query.filter_by(title='Hello World').all()
for post in posts:
print(post.title)
要使用多個過濾條件,請使用filter()方法:
from models import Post
posts = Post.query.filter(Post.title.like('%hello%'), Post.body.like('%world%')).all()
for post in posts:
print(post.title)
六、總結
在本指南中,我們介紹了FlaskORM的各個方面,包括連接數據庫,定義模型,創建表格,添加,刪除,編輯和查詢記錄。使用FlaskORM,您可以使用Python代碼輕鬆地操作數據庫,而不需要直接使用SQL語句,使Web開發變得更加簡單和快捷。
原創文章,作者:YLTMG,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/335111.html