完整Flask与SQLite数据库教程

完整的Flask与SQLite数据库教程

Flask是一个轻量级的Web框架,它非常适合构建小型的Web应用程序。SQLite是一个轻量级的关系型数据库,适合用于开发和测试阶段的应用。本文将详细介绍如何结合Flask和SQLite,开发一个简单的Web应用。

环境准备

在开始之前,确保你的开发环境中已经安装了以下工具:

  1. Python:Flask和SQLite都依赖于Python。你可以通过命令行检查是否已经安装Python:
    bash
    python --version

    如果没有安装Python,可以从官网下载并安装。

  2. Flask:如果还没有安装Flask,可以通过pip安装:
    bash
    pip install flask

  3. 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/', methods=('GET', 'POST'))
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表,用于存储文章的titlecontent字段。

3. 创建HTML模板

Flask使用Jinja2模板引擎来渲染HTML页面。在templates/文件夹中,我们将创建index.htmladd.html两个模板文件。

index.html – 显示所有文章

```html






Flask SQLite Example

All Posts

Add a new post

    {% for post in posts %}

  • {{ post.title }}

    {{ post.content }}

    Delete

  • {% endfor %}


```

add.html – 添加新文章

```html






Add New Post

Add New Post




Back to Home

```

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应用。

THE END