基于Flask框架,编写一段代码能够实现搜索本地mysql数据库并把数据展示在页面上的功能
时间: 2024-02-23 18:02:01 浏览: 128
好的,下面是一个简单的例子,演示如何在Flask中搜索本地MySQL数据库并将数据展示在网页上。
首先,你需要安装并配置Flask和MySQL库。可以使用pip命令来安装它们:
```bash
pip install flask mysql-connector-python
```
然后,你需要在MySQL数据库中创建一个表(例如“books”表),用于存储图书信息。可以使用以下SQL语句来创建该表:
```sql
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
author VARCHAR(255),
year INT
);
```
接下来,你可以使用以下代码来连接MySQL数据库并执行查询:
```python
from flask import Flask, render_template, request
import mysql.connector
app = Flask(__name__)
# 配置MySQL连接
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
# 定义视图函数
@app.route('/')
def index():
query = request.args.get('query') # 获取查询参数
cursor = mydb.cursor()
if query:
# 执行带参数的查询语句
cursor.execute("SELECT * FROM books WHERE title LIKE %s OR author LIKE %s", (f"%{query}%", f"%{query}%"))
else:
# 执行无参数的查询语句
cursor.execute("SELECT * FROM books")
books = cursor.fetchall() # 获取查询结果
return render_template('index.html', books=books)
if __name__ == '__main__':
app.run()
```
在上面的代码中,我们首先连接到MySQL数据库,然后定义了一个名为“index”的视图函数,用于处理网站的主页。该函数首先获取查询参数(例如用户在搜索框中输入的关键字),然后使用“cursor”对象执行SQL查询语句。如果查询参数存在,则执行包含参数的查询语句,否则执行无参数的查询语句。最后,我们使用“fetchall”方法获取查询结果,并将其传递给名为“index.html”的模板文件进行渲染。
在模板文件中,你可以使用Jinja模板引擎来渲染数据。例如,下面是一个简单的“index.html”文件,它使用Jinja模板引擎来显示图书列表和搜索框:
```html
<!DOCTYPE html>
<html>
<head>
<title>Library</title>
</head>
<body>
<h1>Library</h1>
<form method="get">
<input type="text" name="query" placeholder="Search">
<input type="submit" value="Search">
</form>
<ul>
{% for book in books %}
<li>{{ book[1] }} by {{ book[2] }} ({{ book[3] }})</li>
{% endfor %}
</ul>
</body>
</html>
```
在上面的代码中,我们使用“{% for %}”和“{% endfor %}”语句来循环遍历所有书籍,并使用“{{ }}”语句来显示每本书的标题、作者和年份。我们还使用HTML表单元素创建了一个搜索框,用户可以在其中输入关键字并提交查询。
当你在浏览器中访问网站主页时,Flask将从MySQL数据库中获取所有书籍并将它们传递给模板文件进行渲染。如果用户在搜索框中输入了关键字并提交查询,则Flask将执行带参数的查询语句并返回匹配的书籍。最终,你将在浏览器中看到一个图书列表的HTML页面,用户可以在其中搜索并查看书籍信息。
阅读全文