Flask实现简单搜索功能
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>  | 
?
總結
以上是生活随笔為你收集整理的Flask实现简单搜索功能的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 最全长文详述“数字人民币简史”,揭开数字
 - 下一篇: pytorch复现经典生成对抗式的超分辨