您的位置:

FlaskORM指南

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