本文我们将构建一个增删改查的Todo应用,该web app基于Python3.7
开发,用到了Flask和SqlAlchemy两个三方库。Flask
是Python
的一个流行简单的web框架,SqlAlchemy
提供了更简洁的操作数据库方式。至于前端加入一些CSS
样式,以便美观。
准备环境
首先,我们使用pip来安装所需要的依赖,命令如下:
pip install Flask Flask-SQLAlchemy
然后在根目录创建一个template文件夹,Flask框架会自动识别该文件夹下的HTML文件,我们可以创建index.html
文件,现在目录结构如下:
接着,我们需要导入相关依赖。第一步我们需要初始化Flask
应用(我们传入当前模块名__name__
作为参数),然后我们创建数据库连接,我使用的是基本文件数据库SQLite
。如果你有一个更复杂的数据库作为单独的进程(MariaDB
、Postgres
)运行,只需要更改连接字符串。 然后我们将此字符串作为URI数据库地址传递并运行SQLAlchemy
,重要的是定义数据库模型。
import os
from datetime import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DATABASE_FILE = "sqlite:///{}".format(os.path.join(BASE_DIR, "todo.db"))
app.config["SQLALCHEMY_DATABASE_URI"] = DATABASE_FILE
db = SQLAlchemy(app)
class Todo(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
text = db.Column(db.Text)
done = db.Column(db.Boolean)
date = db.Column(db.DateTime, default=datetime.now())
为此,我们创建了Note表,带有自增id、todo任务的文本、标识是否保存的字段done和一个自动日期字段date。稍后我们将使用此模型初始化数据库。
增删改查
我们需要创建4个方法来做增删改查,实现Todo App的功能。
def create_todo(text):
todo = Todo(text=text)
db.session.add(todo)
db.session.commit(