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开发变得更加简单和快捷。