基于Flask框架,编写一段代码访问数据库,然后把数据展示在页面上,可以在页面上进行数据的增删改查,且数据表的列名都是动态从数据库获取的,使用pymysql连接数据库
时间: 2024-03-21 20:38:35 浏览: 66
Flask框架源码,可实现登录,注册,连接数据库等。结合我的文章可以完成项目
好的,以下是一份基于 Flask 框架访问 MySQL 数据库并进行增删改查操作的代码示例,使用的是 pymysql 连接 MySQL 数据库,但是你可以根据自己的需求更改数据库配置和表结构。
``` python
from flask import Flask, render_template, request, redirect, url_for
import pymysql
app = Flask(__name__)
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='username', password='password', db='database')
cursor = conn.cursor()
# 获取表的列名
cursor.execute("SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE table_name = 'example_table'")
columns = [column[0] for column in cursor.fetchall()]
# 定义路由
@app.route("/")
def index():
# 查询数据
cursor.execute("SELECT * FROM example_table")
data = cursor.fetchall()
return render_template("index.html", columns=columns, data=data)
# 定义添加数据的路由
@app.route("/add", methods=["GET", "POST"])
def add():
if request.method == "POST":
# 获取表单数据
values = [request.form.get(column) for column in columns]
# 插入数据
cursor.execute("INSERT INTO example_table ({}) VALUES ({})".format(",".join(columns), ",".join(["%s"] * len(columns))), values)
conn.commit()
return redirect(url_for("index"))
else:
return render_template("add.html", columns=columns)
# 定义修改数据的路由
@app.route("/edit/<int:id>", methods=["GET", "POST"])
def edit(id):
if request.method == "POST":
# 获取表单数据
values = [request.form.get(column) for column in columns]
# 更新数据
cursor.execute("UPDATE example_table SET {} WHERE id=%s".format(",".join(["{}=%s".format(column) for column in columns[1:]])), values[1:] + [id])
conn.commit()
return redirect(url_for("index"))
else:
# 查询数据
cursor.execute("SELECT * FROM example_table WHERE id=%s", (id,))
data = cursor.fetchone()
return render_template("edit.html", columns=columns, data=data)
# 定义删除数据的路由
@app.route("/delete/<int:id>")
def delete(id):
# 删除数据
cursor.execute("DELETE FROM example_table WHERE id=%s", (id,))
conn.commit()
return redirect(url_for("index"))
if __name__ == "__main__":
app.run()
```
在这个示例中,我们定义了四个路由:`/`、`/add`、`/edit/<int:id>` 和 `/delete/<int:id>`。
在 `/` 路由中,我们查询了表的所有数据,并把数据和列名传递到模板 `index.html` 中。
在 `/add` 路由中,我们定义了一个表单用于添加数据,并在表单提交后插入数据到表中。
在 `/edit/<int:id>` 路由中,我们定义了一个表单用于修改数据,并在表单提交后更新数据到表中。
在 `/delete/<int:id>` 路由中,我们删除了指定的数据。
在模板 `index.html` 中,我们使用 Jinja2 模板引擎来动态生成表格,同时添加了添加、修改和删除数据的链接。
在模板 `add.html` 和 `edit.html` 中,我们使用表单来收集用户输入的数据。
这样,我们就完成了一个基于 Flask 框架访问 MySQL 数据库并进行增删改查操作的示例。
阅读全文