Python-bottledemo基于sqlite3和bottle使用示例
**Python-bottle demo基于sqlite3和Bottle使用示例** 在Python的世界里,Bottle是一个轻量级的Web服务器和框架,它非常适合快速构建小型应用。SQLite3则是一个嵌入式的关系型数据库,无需单独的服务器进程即可运行,非常适合小规模的数据存储。本示例将结合两者,展示如何在Python应用中使用Bottle框架处理HTTP请求,并通过SQLite3进行数据存储。 我们来了解Bottle。Bottle是一个单一文件的WSGI应用,它的设计目标是简洁、易用。它提供路由系统,可以将URL映射到特定的处理函数,还支持模板渲染、HTTP请求处理和响应构造等功能。Bottle的核心概念包括路由、视图和中间件。 路由是Bottle的核心,它是URL模式与处理函数之间的关联。例如,我们可以定义一个简单的路由来处理GET请求: ```python from bottle import route, run @route('/hello/:name') def hello(name): return 'Hello, {}!'.format(name) run(host='localhost', port=8080) ``` 上述代码创建了一个路由,当访问`http://localhost:8080/hello/your_name`时,会返回一个带有名字的问候。 接下来,我们引入SQLite3。Python的sqlite3模块提供了对SQLite数据库的接口,允许我们在应用中轻松地读写数据。以下是如何创建数据库、表以及执行CRUD操作的基本示例: ```python import sqlite3 # 连接到SQLite数据库(或创建数据库) conn = sqlite3.connect('my_database.db') # 创建一个游标对象 cursor = conn.cursor() # 执行SQL创建表 cursor.execute(""" CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL ) """) # 插入数据 cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Alice', 'alice@example.com')) # 提交事务 conn.commit() # 查询数据 cursor.execute("SELECT * FROM users WHERE name=?", ('Alice',)) print(cursor.fetchone()) # 更新数据 cursor.execute("UPDATE users SET email=? WHERE name=?", ('newemail@example.com', 'Alice')) # 删除数据 cursor.execute("DELETE FROM users WHERE name=?", ('Alice',)) # 关闭连接 conn.close() ``` 现在,我们将Bottle和SQLite3结合,创建一个简单的Web应用,允许用户查看、添加、更新和删除数据库中的记录。我们需要定义路由来处理各种HTTP请求,然后在这些路由的处理函数中执行相应的数据库操作。 ```python from bottle import route, run, request, response import sqlite3 # 连接数据库并获取游标 conn = sqlite3.connect('users.db') cursor = conn.cursor() @route('/') def index(): # 查询所有用户并渲染到模板 cursor.execute("SELECT * FROM users") users = cursor.fetchall() return template('users.html', users=users) @route('/add', method='POST') def add_user(): name = request.forms.get('name') email = request.forms.get('email') cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", (name, email)) conn.commit() response.redirect('/') @route('/update/<id:int>', method='POST') def update_user(id): name = request.forms.get('name') email = request.forms.get('email') cursor.execute("UPDATE users SET name=?, email=? WHERE id=?", (name, email, id)) conn.commit() response.redirect('/') @route('/delete/<id:int>') def delete_user(id): cursor.execute("DELETE FROM users WHERE id=?", (id,)) conn.commit() response.redirect('/') run(host='localhost', port=8080) ``` 在这个示例中,我们创建了四个路由:一个用于显示所有用户,一个用于添加新用户,一个用于更新用户,最后一个用于删除用户。每个路由都对应一个数据库操作,如插入、更新和删除。 至于模板(如上面的`users.html`),Bottle支持多种模板引擎,如Jinja2和Mako。在模板中,我们可以使用变量和控制结构来动态生成HTML内容。例如,使用Bottle内置的SimpleTemplate,`users.html`可能如下所示: ```html <!DOCTYPE html> <html> <head> <title>Users</title> </head> <body> <h1>Users</h1> <table> <tr><th>Name</th><th>Email</th></tr> % for user in users: <tr><td>{{ user[1] }}</td><td>{{ user[2] }}</td></tr> % end </table> <a href="/add">Add User</a> </body> </html> ``` 这个模板会遍历查询结果,生成一个包含所有用户姓名和邮箱的表格,并提供一个链接来添加新用户。 Python-bottle-demo基于sqlite3和Bottle的应用展示了如何利用Bottle构建Web应用,以及如何结合SQLite3进行数据管理。这是一个基础但实用的例子,适合初学者理解和实践Web开发和数据库操作。通过进一步学习和扩展,你可以创建更复杂、功能更丰富的应用程序。
- 1
- 粉丝: 413
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助