使用Bottle框架实现基于数据库的增删改查功能
Bottle是一个简单、快速、轻量级的Python Web框架,适用于构建小型应用程序和API。它支持SQLite、MySQL、PostgreSQL等多种数据库,并且提供了方便的工具和函数帮助我们进行数据库操作。
在下面的示例中,我们将使用Bottle框架实现一个基于SQLite数据库的增删改查功能。SQLite是一个轻量级的嵌入式数据库引擎,适合开发小型应用程序。
先确保你已经在系统中安装了Bottle和SQLite,并且创建一个名为task_manager.db的SQLite数据库文件。
首先,我们需要导入必要的模块和函数:
from bottle import Bottle, route, run, template, request, redirect import sqlite3
然后,我们需要创建一个Bottle应用程序对象,并连接到SQLite数据库:
app = Bottle()
# 连接SQLite数据库
conn = sqlite3.connect('task_manager.db')
接下来,我们创建一个路由来显示任务列表:
@app.route('/')
def index():
cursor = conn.cursor()
cursor.execute("SELECT * FROM tasks")
tasks = cursor.fetchall()
return template('index.tpl', tasks=tasks)
在这个路由中,我们通过执行SQL查询语句检索所有的任务记录,并将它们传递给名为index.tpl的模板文件进行渲染。
接下来,我们创建一个路由来添加新的任务:
@app.route('/add', method='GET')
def add():
return template('add.tpl')
@app.route('/add', method='POST')
def do_add():
task = request.forms.get('task')
cursor = conn.cursor()
cursor.execute("INSERT INTO tasks (task) VALUES (?)", (task,))
conn.commit()
redirect('/')
在这个路由中,我们使用两个路由函数,一个用于显示添加任务的表单页面,另一个用于处理表单提交。在处理表单提交时,我们通过request.forms.get('task')获取到用户输入的任务内容,并将其插入到数据库中。
接下来,我们创建一个路由来编辑任务:
@app.route('/edit/<id>', method='GET')
def edit(id):
cursor = conn.cursor()
cursor.execute("SELECT * FROM tasks WHERE id=?", (id,))
task = cursor.fetchone()
return template('edit.tpl', task=task)
@app.route('/edit/<id>', method='POST')
def do_edit(id):
task = request.forms.get('task')
cursor = conn.cursor()
cursor.execute("UPDATE tasks SET task=? WHERE id=?", (task, id))
conn.commit()
redirect('/')
在这个路由中,我们使用了带参数的路由,以便根据任务的ID值来获取特定的任务记录。我们提供了两个路由函数,一个用于显示编辑任务的表单页面,另一个用于处理表单提交。在处理表单提交时,我们根据任务的ID值更新相应的任务内容。
最后,我们创建一个路由来删除任务:
@app.route('/delete/<id>', method='GET')
def delete(id):
cursor = conn.cursor()
cursor.execute("DELETE FROM tasks WHERE id=?", (id,))
conn.commit()
redirect('/')
在这个路由中,我们同样使用了带参数的路由,以便根据任务的ID值来删除相应的任务记录。
最后,我们在应用程序末尾运行Bottle服务器:
if __name__ == '__main__':
run(app, debug=True)
现在我们可以通过运行这个脚本来启动Bottle服务器,并在浏览器中访问对应的URL来进行增删改查操作。
