完整Flask与SQLite数据库教程
完整的Flask与SQLite数据库教程
Flask是一个轻量级的Web框架,它非常适合构建小型的Web应用程序。SQLite是一个轻量级的关系型数据库,适合用于开发和测试阶段的应用。本文将详细介绍如何结合Flask和SQLite,开发一个简单的Web应用。
环境准备
在开始之前,确保你的开发环境中已经安装了以下工具:
-
Python:Flask和SQLite都依赖于Python。你可以通过命令行检查是否已经安装Python:
bash
python --version
如果没有安装Python,可以从官网下载并安装。 -
Flask:如果还没有安装Flask,可以通过
pip
安装:
bash
pip install flask -
SQLite:SQLite通常与Python一起安装,您可以通过以下命令检查SQLite是否已安装:
bash
sqlite3 --version
如果没有安装SQLite,可以从官网下载并安装。
项目结构
首先,创建一个文件夹来存放我们的项目文件。项目结构如下:
flask_sqlite_example/
│
├── app.py # Flask应用的主程序
├── database.db # SQLite数据库文件
└── templates/
└── index.html # 首页HTML模板
1. 创建Flask应用
首先,在app.py
文件中创建Flask应用,设置基本的路由和视图。
```python
from flask import Flask, render_template, request, redirect, url_for
import sqlite3
app = Flask(name)
连接数据库函数
def get_db_connection():
conn = sqlite3.connect('database.db') # 连接到SQLite数据库
conn.row_factory = sqlite3.Row # 返回字典格式的结果
return conn
首页路由,展示数据库中的所有数据
@app.route('/')
def index():
conn = get_db_connection()
posts = conn.execute('SELECT * FROM posts').fetchall() # 获取所有的posts
conn.close()
return render_template('index.html', posts=posts)
添加新文章路由
@app.route('/add', methods=('GET', 'POST'))
def add():
if request.method == 'POST':
title = request.form['title']
content = request.form['content']
if not title or not content:
return 'Title and Content are required!'
conn = get_db_connection()
conn.execute('INSERT INTO posts (title, content) VALUES (?, ?)', (title, content))
conn.commit()
conn.close()
return redirect(url_for('index')) # 添加成功后重定向到首页
return render_template('add.html') # 显示添加页面
删除文章路由
@app.route('/delete/
def delete(id):
conn = get_db_connection()
conn.execute('DELETE FROM posts WHERE id = ?', (id,))
conn.commit()
conn.close()
return redirect(url_for('index')) # 删除后重定向到首页
if name == 'main':
app.run(debug=True)
```
2. 创建SQLite数据库
在Flask应用中,我们使用SQLite来存储数据。为了让Flask应用能够连接SQLite数据库,首先需要创建一个数据库文件,并且定义一张表来存储文章内容。
在项目根目录下,使用Python的SQLite模块创建一个数据库和表。
```python
import sqlite3
创建数据库和表
def init_db():
conn = sqlite3.connect('database.db')
conn.execute('''CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL
)''')
conn.close()
if name == 'main':
init_db() # 初始化数据库
```
运行上面的代码将创建database.db
数据库文件,并且创建一个posts
表,用于存储文章的title
和content
字段。
3. 创建HTML模板
Flask使用Jinja2模板引擎来渲染HTML页面。在templates/
文件夹中,我们将创建index.html
和add.html
两个模板文件。
index.html
– 显示所有文章
```html
All Posts
-
{% for post in posts %}
-
{{ post.title }}
{{ post.content }}
{% endfor %}
```
add.html
– 添加新文章
```html
Add New Post
```
4. 启动应用
现在,应用的基本功能已经完成。你可以通过以下命令启动Flask应用:
bash
python app.py
访问http://127.0.0.1:5000/
,你应该能够看到首页,展示了从SQLite数据库中加载的所有文章。
点击“Add a new post”链接,你将被带到添加新文章的页面。填写标题和内容后,提交表单,新的文章将被添加到数据库,并显示在首页。
5. 进一步扩展
这个简单的Flask与SQLite项目可以进行很多扩展:
- 数据验证:当前表单没有进行数据验证,你可以使用Flask-WTF来简化表单处理和验证。
- 分页功能:如果数据库中的文章很多,可以考虑加入分页功能。
- 更新文章:你可以增加更新文章的功能,让用户能够编辑已有的文章。
- 部署:将应用部署到服务器上,使其能够供外部访问。可以使用Heroku、DigitalOcean等服务进行部署。
总结
本文展示了如何使用Flask框架和SQLite数据库构建一个简单的Web应用程序。通过Flask和SQLite的结合,你可以快速构建功能简单但强大的Web应用。Flask的灵活性使得开发者能够根据需要自由地扩展功能,而SQLite作为一个轻量级的数据库,则非常适合用于开发阶段的存储需求。
希望这篇教程能帮助你理解Flask与SQLite的结合方式,并激发你进一步开发更复杂的Web应用。