如何使用python bottle框架查询mongo数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python bottle框架查询mongo数据库相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个查询表单,允许我查询我的mongo数据库并在网页上显示结果。我正在使用python和瓶子框架。这是我的代码示例

import bottle
import pymongo


@bottle.route('/')
def home_page():

#connect to mongodb 
connection = pymongo.MongoClient('localhost', 27017)
#connect to mydb database
db = connection.TestCollection
#connect to collection
data = db.TestData
#finding all data
mydata = data.find()

result = []
for i in mydata:
    result.append([i['User'],i['Email'],i['Title']]) 


output = bottle.template('results.tpl', rows=result)

return output

这会使用瓶子模板results.tpl将我的mongo数据库中的所有数据打印到网页

    <h1>Results</h1>


    <form action="/" method="GET">
    enter query: <input name="result" type="text" />
    <input type="submit" /><br/>
    </form>



    <table border="1">
    <tbody>
    <tr><th>User</th><th>Email</th><th>Title</th></tr>
    %for row in rows:
    <tr>
    %for col in row:
        <td>{{col}}</td>
    %end
    </tr>
%end
<tbody>
</table>

我的问题是我不希望所有数据只显示搜索到的数据。我希望能够使用该表单发出请求,该请求将根据提交的关键字从mongo获取数据。如果这种类型的查询Web应用程序可以使用其他框架,请告诉我。如果你有任何好的链接来帮助我理解使用请求我也会喜欢它。

谢谢。

答案

将搜索作为查询字符串参数传递给您的路径。例如,如果请求是:

http://www.blah.com/?search=foo

然后你的代码将是这样的:

import re

from bottle import route, request

@bottle.route('/')
def home_page():
    search = request.query['search']
    search_re = re.compile(search)

    # mongo stuff

    my_data = data.find({
      '$or': [
          {'User': {'$regex': search_re}},
          {'Email': {'$regex': search_re}},
          {'Title': {'$regex': search_re}}
      ]
    })

    # do stuff with my_data and template

    return output

这可能不完全正常,但应该足以让你继续前进。

以上是关于如何使用python bottle框架查询mongo数据库的主要内容,如果未能解决你的问题,请参考以下文章

Python之Bottle框架使用

python之Bottle框架

python微框架Bottle(http)

bottle框架

微型 Python Web 框架: Bottle

Python轻量级Web框架:Bottle库!