写一个基于flask和数据库的信息管理系统
时间: 2023-06-19 19:09:01 浏览: 98
好的,下面是一个简单的基于 Flask 和 SQLite3 的信息管理系统:
1. 安装 Flask 和 SQLite3
在终端中输入以下命令安装 Flask 和 SQLite3:
```
pip install flask
pip install sqlite3
```
2. 创建数据库
在项目目录下创建一个名为 `database.db` 的 SQLite3 数据库文件,用于保存用户的信息。可以使用 SQLite3 命令行工具或 SQLite3 可视化工具创建表和字段。
在这里我们创建一个 `users` 表,包含 `id`、`name` 和 `age` 三个字段:
```
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
);
```
3. 创建 Flask 应用
在项目目录下创建一个名为 `app.py` 的 Python 文件,编写 Flask 应用程序。
```python
from flask import Flask, render_template, request, redirect, url_for
import sqlite3
app = Flask(__name__)
# 配置数据库文件路径
app.config['DATABASE'] = 'database.db'
# 建立数据库连接
def get_db():
db = sqlite3.connect(app.config['DATABASE'])
db.row_factory = sqlite3.Row
return db
# 关闭数据库连接
def close_db(e=None):
db = sqlite3.connect(app.config['DATABASE'])
if db is not None:
db.close()
# 初始化数据库
def init_db():
with app.app_context():
db = get_db()
with app.open_resource('schema.sql', mode='r') as f:
db.cursor().executescript(f.read())
db.commit()
# 清空数据库
@app.route('/clear')
def clear():
with app.app_context():
db = get_db()
db.execute('DELETE FROM users')
db.commit()
return redirect(url_for('index'))
# 首页,显示所有用户信息
@app.route('/')
def index():
with app.app_context():
db = get_db()
users = db.execute('SELECT * FROM users').fetchall()
return render_template('index.html', users=users)
# 添加用户信息
@app.route('/add', methods=['GET', 'POST'])
def add():
if request.method == 'POST':
name = request.form['name']
age = request.form['age']
with app.app_context():
db = get_db()
db.execute('INSERT INTO users (name, age) VALUES (?, ?)', [name, age])
db.commit()
return redirect(url_for('index'))
else:
return render_template('add.html')
# 更新用户信息
@app.route('/edit/<int:id>', methods=['GET', 'POST'])
def edit(id):
if request.method == 'POST':
name = request.form['name']
age = request.form['age']
with app.app_context():
db = get_db()
db.execute('UPDATE users SET name=?, age=? WHERE id=?', [name, age, id])
db.commit()
return redirect(url_for('index'))
else:
with app.app_context():
db = get_db()
user = db.execute('SELECT * FROM users WHERE id=?', [id]).fetchone()
return render_template('edit.html', user=user)
# 删除用户信息
@app.route('/delete/<int:id>')
def delete(id):
with app.app_context():
db = get_db()
db.execute('DELETE FROM users WHERE id=?', [id])
db.commit()
return redirect(url_for('index'))
# 注册清空数据库命令
@app.cli.command('clear-db')
def clear_db_command():
clear()
# 启动应用
if __name__ == '__main__':
app.run(debug=True)
```
4. 创建 HTML 模板
在项目目录下创建一个名为 `templates` 的文件夹,用于保存 HTML 模板文件。
在 `templates` 文件夹中创建三个 HTML 文件:
`index.html`:显示所有用户信息
```html
<!DOCTYPE html>
<html>
<head>
<title>Information Management System</title>
</head>
<body>
<h1>Information Management System</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Operation</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td>{{ user['id'] }}</td>
<td>{{ user['name'] }}</td>
<td>{{ user['age'] }}</td>
<td>
<a href="{{ url_for('edit', id=user['id']) }}">Edit</a>
<a href="{{ url_for('delete', id=user['id']) }}">Delete</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="{{ url_for('add') }}">Add User</a>
<a href="{{ url_for('clear') }}">Clear Database</a>
</body>
</html>
```
`add.html`:添加用户信息
```html
<!DOCTYPE html>
<html>
<head>
<title>Information Management System</title>
</head>
<body>
<h1>Information Management System</h1>
<form method="POST" action="{{ url_for('add') }}">
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<br>
<label for="age">Age:</label>
<input type="number" id="age" name="age" required>
<br>
<button type="submit">Add</button>
</form>
<a href="{{ url_for('index') }}">Back to List</a>
</body>
</html>
```
`edit.html`:更新用户信息
```html
<!DOCTYPE html>
<html>
<head>
<title>Information Management System</title>
</head>
<body>
<h1>Information Management System</h1>
<form method="POST" action="{{ url_for('edit', id=user['id']) }}">
<label for="name">Name:</label>
<input type="text" id="name" name="name" value="{{ user['name'] }}" required>
<br>
<label for="age">Age:</label>
<input type="number" id="age" name="age" value="{{ user['age'] }}" required>
<br>
<button type="submit">Update</button>
</form>
<a href="{{ url_for('index') }}">Back to List</a>
</body>
</html>
```
5. 运行应用
在终端中进入项目目录,运行以下命令启动应用:
```
python app.py
```
在浏览器中访问 `http://localhost:5000/` 即可使用信息管理系统。
你可以在系统中添加、更新和删除用户信息,也可以清空数据库。
阅读全文