初学者必看:Flask与SQLite结合使用

初学者必看:Flask与SQLite结合使用

Flask是一个轻量级的Web框架,适用于开发小型应用程序和API。SQLite则是一个轻量级的嵌入式数据库,适用于应用程序的开发阶段,尤其是对于需要快速启动的小型Web应用。Flask与SQLite结合使用非常简单且高效,适合初学者进行学习和开发。

在这篇文章中,我们将详细介绍如何将Flask与SQLite结合使用,帮助你从零开始搭建一个简单的Web应用。

1. 什么是Flask与SQLite

Flask

Flask是一个使用Python编写的Web框架,遵循了“微框架”原则,即提供基本功能,同时允许开发者根据需要添加扩展。Flask非常灵活,适用于快速开发Web应用程序,尤其是API和小型Web项目。

SQLite

SQLite是一个轻量级的关系型数据库,具有以下特点:
- 嵌入式数据库:SQLite不需要单独的数据库服务器,它是一个轻量级的文件数据库,可以直接嵌入到应用程序中。
- 简单易用:SQLite无需复杂的配置,适合小型应用,且对大多数Web项目足够使用。

2. 安装Flask和SQLite

安装Flask

首先,你需要安装Flask。你可以通过Python的包管理工具pip来安装:

bash
pip install Flask

安装SQLite

SQLite通常已经与Python绑定在一起,因此无需额外安装。如果你使用的是较旧版本的Python,可能需要安装sqlite3模块:

bash
pip install sqlite3

验证安装

你可以通过在命令行中输入以下命令来验证Flask是否成功安装:

bash
python -m flask --version

如果没有报错,说明Flask已安装成功。

3. 创建Flask应用

我们将从一个简单的Flask应用开始,逐步整合SQLite数据库。

创建项目结构

首先,创建一个文件夹来存放项目文件:

flask_sqlite_example/
├── app.py
├── database.db
├── templates/
│ └── index.html
└── static/

编写Flask应用(app.py)

app.py中,编写Flask应用的基本结构:

```python
from flask import Flask, render_template, request, redirect, url_for
import sqlite3

app = Flask(name)

初始化数据库

def init_db():
with sqlite3.connect('database.db') as conn:
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT
)
''')
conn.commit()

@app.route('/')
def index():
# 获取任务列表
with sqlite3.connect('database.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM tasks')
tasks = cursor.fetchall()
return render_template('index.html', tasks=tasks)

@app.route('/add', methods=['POST'])
def add_task():
title = request.form.get('title')
description = request.form.get('description')

if title:
    with sqlite3.connect('database.db') as conn:
        cursor = conn.cursor()
        cursor.execute('INSERT INTO tasks (title, description) VALUES (?, ?)', (title, description))
        conn.commit()

return redirect(url_for('index'))

@app.route('/delete/', methods=['POST'])
def delete_task(task_id):
with sqlite3.connect('database.db') as conn:
cursor = conn.cursor()
cursor.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
conn.commit()

return redirect(url_for('index'))

if name == 'main':
init_db() # 初始化数据库
app.run(debug=True)
```

解释代码:

  • init_db()函数:此函数检查数据库中是否已存在tasks表,如果不存在,则创建一个新的任务表。
  • / 路由:显示任务列表。
  • /add 路由:添加新任务到数据库。
  • /delete/<int:task_id> 路由:删除特定ID的任务。

4. 创建HTML模板

Flask使用Jinja2模板引擎来动态生成HTML内容。我们将在templates文件夹下创建一个简单的HTML文件:index.html

编写index.html

templates/index.html中,创建一个显示任务列表、添加新任务和删除任务的页面:

```html






Flask SQLite Example

任务列表

    {% for task in tasks %}

  • {{ task[1] }}: {{ task[2] }}


  • {% endfor %}

添加任务







```

解释:

  • for task in tasks:循环遍历任务列表,将每个任务的标题和描述显示在页面上。
  • 表单提交:使用POST方法将新任务添加到数据库。

5. 运行应用

完成代码后,可以运行Flask应用:

bash
python app.py

你应该看到类似如下的输出:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

现在在浏览器中访问 http://127.0.0.1:5000/,你就可以看到任务管理界面,能够添加、显示和删除任务。

6. 总结

本文介绍了如何使用Flask和SQLite结合开发一个简单的任务管理应用。通过以下几个步骤,你已经学会了:
- 如何安装Flask和SQLite;
- 如何初始化SQLite数据库并在Flask中使用;
- 如何使用Flask处理用户请求,读取和写入SQLite数据库;
- 如何使用Jinja2模板渲染HTML页面。

Flask与SQLite结合使用的简单性使其成为初学者学习Web开发的理想选择。你可以继续扩展这个应用,增加更多功能,如任务更新、表单验证等。

THE END