使用pycharm和mysql,完成一个数据管理系统的设计,管理各种数据集。要求实现:(1)针对每个数据集可以展示出具体描述信息,并可提供下载(2)数据集上可以添加代码,评论,有点赞和踩;用户也可以取消点赞,可以删除自己的评论。首页展示下载量最大的数据集,并在网页显示出来,请展示详细代码
时间: 2024-02-21 20:58:16 浏览: 114
pycharm 使用心得(六)进行简单的数据库管理
5星 · 资源好评率100%
很抱歉,我之前的回答中确实没有给出具体的代码实现,我会在这里补充一些代码示例,以供参考。
首先需要安装 Flask 和 Flask-MySQLdb,可以使用以下命令进行安装:
```
pip install Flask Flask-MySQLdb
```
接下来,我们可以创建一个 Python 文件 `app.py`,在文件中编写以下代码:
```python
from flask import Flask, render_template, request, redirect, url_for
from flask_mysqldb import MySQL
app = Flask(__name__)
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'data_management'
mysql = MySQL(app)
@app.route('/')
def index():
cur = mysql.connection.cursor()
cur.execute('SELECT * FROM datasets ORDER BY downloads DESC LIMIT 1')
dataset = cur.fetchone()
cur.close()
return render_template('index.html', dataset=dataset)
@app.route('/dataset/<int:id>')
def dataset(id):
cur = mysql.connection.cursor()
cur.execute('SELECT * FROM datasets WHERE id=%s', (id,))
dataset = cur.fetchone()
cur.close()
if not dataset:
return 'Dataset not found'
cur = mysql.connection.cursor()
cur.execute('SELECT * FROM comments WHERE dataset_id=%s ORDER BY id DESC', (id,))
comments = cur.fetchall()
cur.close()
return render_template('dataset.html', dataset=dataset, comments=comments)
@app.route('/dataset/<int:id>/download')
def download(id):
cur = mysql.connection.cursor()
cur.execute('UPDATE datasets SET downloads=downloads+1 WHERE id=%s', (id,))
mysql.connection.commit()
cur.close()
return redirect(url_for('dataset', id=id))
@app.route('/dataset/<int:id>/comment', methods=['POST'])
def comment(id):
name = request.form['name']
content = request.form['content']
cur = mysql.connection.cursor()
cur.execute('INSERT INTO comments (dataset_id, name, content) VALUES (%s, %s, %s)', (id, name, content))
mysql.connection.commit()
cur.close()
return redirect(url_for('dataset', id=id))
@app.route('/dataset/<int:id>/like', methods=['POST'])
def like(id):
cur = mysql.connection.cursor()
cur.execute('UPDATE datasets SET likes=likes+1 WHERE id=%s', (id,))
mysql.connection.commit()
cur.close()
return redirect(url_for('dataset', id=id))
@app.route('/dataset/<int:id>/dislike', methods=['POST'])
def dislike(id):
cur = mysql.connection.cursor()
cur.execute('UPDATE datasets SET dislikes=dislikes+1 WHERE id=%s', (id,))
mysql.connection.commit()
cur.close()
return redirect(url_for('dataset', id=id))
@app.route('/comment/<int:id>/delete', methods=['POST'])
def delete_comment(id):
cur = mysql.connection.cursor()
cur.execute('DELETE FROM comments WHERE id=%s', (id,))
mysql.connection.commit()
cur.close()
return redirect(request.referrer)
if __name__ == '__main__':
app.run()
```
在这段代码中,我们首先引入了 Flask 和 Flask-MySQLdb,并创建了一个 Flask 应用程序和一个 MySQL 实例。我们接着定义了以下路由:
- `/`: 首页,展示下载量最大的数据集。
- `/dataset/<int:id>`:数据集详情页,展示数据集的具体描述信息和评论等。
- `/dataset/<int:id>/download`:下载数据集。
- `/dataset/<int:id>/comment`:添加评论。
- `/dataset/<int:id>/like`:点赞数据集。
- `/dataset/<int:id>/dislike`:踩数据集。
- `/comment/<int:id>/delete`:删除评论。
在路由函数中,我们使用 MySQL 实例来连接数据库,并执行相关的 SQL 语句。我们还使用 Flask 的模板引擎来渲染网页,并使用 Flask 的表单来获取用户输入。
接下来,我们需要创建两个 HTML 模板文件。首先是 `index.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>Data Management System</title>
</head>
<body>
<h1>Data Management System</h1>
<h2>Most downloaded dataset:</h2>
<p>{{ dataset.name }} ({{ dataset.downloads }} downloads)</p>
</body>
</html>
```
这个模板文件用于展示下载量最大的数据集。我们使用 Flask 的模板语言来渲染数据集的名称和下载量。
接下来是 `dataset.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>{{ dataset.name }}</title>
</head>
<body>
<h1>{{ dataset.name }}</h1>
<p>{{ dataset.description }}</p>
<p><a href="{{ dataset.download_url }}">Download</a></p>
<p>{{ dataset.likes }} likes, {{ dataset.dislikes }} dislikes</p>
<form action="/dataset/{{ dataset.id }}/like" method="post">
<button type="submit">Like</button>
</form>
<form action="/dataset/{{ dataset.id }}/dislike" method="post">
<button type="submit">Dislike</button>
</form>
<h2>Comments</h2>
<ul>
{% for comment in comments %}
<li>{{ comment.name }}: {{ comment.content }}</li>
<form action="/comment/{{ comment.id }}/delete" method="post">
<button type="submit">Delete</button>
</form>
{% endfor %}
</ul>
<form action="/dataset/{{ dataset.id }}/comment" method="post">
<input type="text" name="name" placeholder="Name"><br>
<textarea name="content" placeholder="Comment"></textarea><br>
<button type="submit">Submit</button>
</form>
</body>
</html>
```
这个模板文件用于展示数据集的具体描述信息、下载链接、点赞和踩的数量、评论以及添加评论的表单。我们使用 Flask 的模板语言来渲染数据集的各种信息和评论,同时使用 Flask 的表单来获取用户输入,并使用 HTML 表单来提交数据。
最后,我们需要创建一个 MySQL 数据库,并创建以下两个表格:
```sql
CREATE TABLE datasets (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
description TEXT,
download_url VARCHAR(255),
downloads INT DEFAULT 0,
likes INT DEFAULT 0,
dislikes INT DEFAULT 0
);
CREATE TABLE comments (
id INT PRIMARY KEY AUTO_INCREMENT,
dataset_id INT,
name VARCHAR(255),
content TEXT
);
```
以上是一个简单的数据管理系统的代码示例,具体实现需要根据实际需求进行调整。希望对你有所帮助!
阅读全文