flask搜索mysql项目_使用flask框架制作简单的基于MySQL数据库的搜索网页

2022-06-19 12:55:27

本小白一直没学过网页语言,研一才开始接触python,现在导师让制作个简单的网页,我也是用了些时间才搞明白。里面若有问题或错误的,请留言!!!

我就直接说我是怎么做的吧,首先是创建文件夹,把你需要做的网页文件都放在一个文件夹里。文件夹的大致内容如下。

就这三个东东,因为我们做的网页非常简单,所以不需要那么多的花里胡哨。static文件夹里面是存放图片用的,templates文件夹是用来存放HTML文件的。web.py就是主程序。我们先来写一个简单的搜索网页。其中html文件的内容如下:

Title

搜索:

其实我们不太用全懂html语言,只要知道个差不多就行,毕竟不是专门做网页的,能实现我们简单的需求即可。上面这段代码是生成了一个搜索文本框。具体我就不讲了,因为我也不是很清楚哈哈。然后写我们的主程序代码:

from flask import Flask,render_template,request

import pymysql

app = Flask(__name__)

@app.route('/')

def index():

return render_template('base.html')

if __name__ == '__main__':

app.run(debug=True,host='127.0.0.1',port='8080')

这个base.html文件就是刚才我们写的,放在templates文件夹下。运行后就会出现一个网址,点击进入,如图:

其实到这一步很简单,可是我到这一步都花了半天时间。然后又开始琢磨如何连接MySQL数据库,又是过了两天......着实菜......

flask连接数据库很简单,就和python连接数据库是一样的,不用额外乱七八糟什么的,我们需要做的就是如何将读取出来的数据展示在网页上。那么我们就需要做两件事,html语言如何获取这些变量值,python如何将这些变量值传入html文件。先看另一个html文件,代码如下:

搜索结果展示

搜索结果展示


id姓名年龄城市

{% for i in items %}

{{ i.id }}{{ i.name }}{{ i.age }}{{ i.city }}

{% endfor %}

这段代码的意思就是将数据库中的信息打印在网页上。此时我的主程序代码加入了另外一个函数:

from flask import Flask,render_template,request

import pymysql

app = Flask(__name__)

@app.route('/')

def index():

return render_template('base.html')

@app.route('/gets/',methods=['POST'])

def search():

conn = pymysql.connect(user='root', host='localhost', passwd='', db='test',cursorclass=pymysql.cursors.DictCursor)

cur = conn.cursor()

sql = "select * from database1"

cur.execute(sql)

datas = cur.fetchall()

return render_template('search.html',items=datas)

if __name__ == '__main__':

app.run(debug=True,host='127.0.0.1',port='8080')

多了一个@app.route('/gets/',methods=['POST'])还有下面的search()函数,当然我们还没做到搜索功能,这只是将MySQL数据库中的信息打印在网页上。

@app.route('/gets/',methods=['POST'])这一行是怎么写出来的呢,这个gets是base.html文件里定义的,

这大概意思应该就是gets得到响应后,才执行search()函数。

数据库连接的时候,记住一定要写上cursorclass=pymysql.cursors.DictCursor) 不然网页显示不出来我们的数据,我在这搞了半天。哎。

下面的语句应该不用解释了,最后返回的是search.html刚才的搜索结果页面,还有需要显示出来的datas,这里的items是search.html文件里定义的,

for i in items 很明显就是遍历我们得到的数据了。现在再次运行我们的主程序,一开始页面就是我们第一次的页面,然后点击搜索,就会出现如下:

好了,到这我们基本知道了如何将数据库的信息展示到网页上了。那么搜索功能的话就是让它删选出符合条件的数据。比如,我想删选出姓名中含有“江”字的数据,那就应该在search()函数中加入删选条件,如下

def search():

conn = pymysql.connect(user='root', host='localhost', passwd='', db='test',cursorclass=pymysql.cursors.DictCursor)

cur = conn.cursor()

S = request.values.get('question')

sql = "select * from database1 where name like '%"+S+"%'"

cur.execute(sql)

datas = cur.fetchall()

return render_template('search.html',items=datas)

上面的search()函数经过了修改,加入了S = request.values.get('question')这行代码,它的功能就是得到输入框的信息,后面的参数‘question’在base.html文件里定义的:

sql语句的意思就是将包含输入框信息S的内容找出来。其他地方没改。此时我们再次运行,并在输入框中输入‘江’,然后回车,看到如下结果:

把姓名中包含‘江’字的全都找出来了。哈哈哈。

至于什么全文搜素啊,我也没看,毕竟也用不到那么复杂的,如果以后接触了再写。

虽然很简单吧,但自己以前没接触过,开始着实让人头疼。希望别人走的弯路少些。自己也记得劳些。

  • 作者:大学士66
  • 原文链接:https://blog.csdn.net/weixin_30814159/article/details/113336034
    更新时间:2022-06-19 12:55:27