Flask实现简单搜索功能
Flask实现简单搜索功能主要功能是通过form的方式传值,再到数据库中查询。下面是数据库的内容我们这里主要是实现对content进行模糊匹配。首先打开pycharm,构建一个最简单的flask应用。#search.pyfrom flask import Flaskapp = Flask(__name__)@app.route("/")def index():return render_templ
Flask实现简单搜索功能
主要功能是通过form的方式传值,再到数据库中查询。下面是数据库的内容我们这里主要是实现对content进行模糊匹配。
首先打开pycharm,构建一个最简单的flask应用。
#search.py from flask import Flask app = Flask(__name__) @app.route("/") def index(): return render_template('search.html') if __name__ =="__main__": app.run() |
既然要搜索,必要要连接数据库,要引入SQLAlchemy这个包。
#search.py from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:123456@127.0.0.1:3306/test?charset=utf8' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True #root用户名123456密码 test数据库 |
最后我们需要从form表单拿到我们想要的数据。然后进行数据库查询操作
@app.route('/', methods=['post', 'get']) def search(): content = request.form.get('content') #需要查询的内容 if content is None: content = " " quotes = Quotes.query.filter(Quotes.content.like("%"+content+"%")if content is not None else "").all() #查询跟content有关的数据,返回结果为列表 return render_template('search.html',quotes = quotes) #将查询结果返回到前端 |
#search,html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post" action="{{url_for('search')}}"> <input type="text" name="content" id="content" placeholder="请输入搜索内容"> <input type="submit" value="搜索"> </form> <div> <table border="1px" cellspacing="0px"> {% for i in quotes %} <tr> <td>名字</td> <td>{{i.name}}</td> <td>内容</td> <td>{{i.content}}</td> </tr> {% endfor %} </table> </div> </body> </html> |
效果如下:
一个简单的查询功能就完成了,这里只是做了单条件模糊查询。接下来介绍多条件模糊查询和精确查询
#多条件模糊查询 content = Quotes.query.filter( Quotes.id.like("%" + id + "%") if id is not None else "", Quotes.name.like("%" + name + "%") if name is not None else "", Quotes.content.like("%" + content + "%") if content is not None else "" ).all() |
#单条件精确查询 content = Quotes.query.filter_by(id=id).all() |
#多条件精确查询 content = Quotes.query.filter_by(id=id,name=name).all() |
最后附上完整代码
#search.py from flask import Flask, config, render_template, request, flash, url_for, session from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(config)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1914571065lyj@127.0.0.1:3306/java2019?charset=utf8' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
class Quotes(db.Model): id = db.Column(db.Integer, primary_key=True, comment='ID') name = db.Column(db.String(255), unique=True, comment='名称') content = db.Column(db.String(255), comment='内容')
@app.route('/', methods=['post', 'get']) def search(): content = request.form.get('content') if content is None: content = " " quotes = Quotes.query.filter(Quotes.content.like("%"+content+"%")if content is not None else "").all() return render_template('search.html',quotes = quotes)
if __name__ == "__main__": app.run(debug=True) |
#search.py <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post" action="{{url_for('search')}}"> <input type="text" name="content" id="content" placeholder="请输入搜索内容"> <input type="submit" value="搜索"> </form> <div> <table border="1px" cellspacing="0px"> {% for i in quotes %} <tr> <td>名字</td> <td>{{i.name}}</td> <td>内容</td> <td>{{i.content}}</td> </tr> {% endfor %} </table> </div> </body> </html> |
更多推荐
所有评论(0)