初学者必看: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/
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
任务列表
-
{% 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开发的理想选择。你可以继续扩展这个应用,增加更多功能,如任务更新、表单验证等。