首页 文章详情

Flask结合MongoDB

咪哥杂谈 | 573 2019-09-05 23:22 0 0 0
UniSMS (合一短信)

咪哥杂谈

7e791aefe6ae318c4d2634fd11b16041.webp

本篇阅读时间约为 4 分钟。


1

前言


今天来介绍下如何将 MongoDB 与 Flask 框架结合在一起使用。忘记 MongoDB 的同学可以回顾下之前写的文章。


2

成果展示


先来个源码截图:


8bf08c88d1606e06e7257d1f64726aa3.webp


项目启动后,直接访问我们的 url ,让它去查库,age 我们传入 24 好了,数据库中 age = 24 的有 3 条信息。


127.0.0.1:8080/user/24

75f57843024698a00dc904e51d1fc53c.webp

 注意观察列出来的几条,信息是否和后面数据库中数据一致!


3

环境准备


开始之前,先来安装一下我们需要的第三库。


pip install Flask-PyMongo


4d301f70a94110c797ef1c92d42d7672.webp


Flask提供了第三方插件,将 pymongo 这个库与 Flask 整合在了一起,所以需要先安装此插件库。


4

场景设定


场景设定如下:


现在 MongoDB 数据库里有 4 条数据,分别:


6bee8f393d4157c4ac488741e2b1b6ee.webp


分别是 4 个不同人的信息,接下来,使用 Flask 来结合 MongoDB 一起使用,通过页面 url 传入查询字段,在 url 上传入 24,让 Flask 去 MongoDB 中查询 age=24 的用户信息,并显示在页面上。


5

代码讲解


1. HTML 涉及的代码:


<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><h1>咪哥杂谈</h1><hr/><h3>展示区 Users:</h3><ul>    {% for user in users %}        <li>姓名:{{ user.name }}, 年龄:{{ user.age }}, 身高:{{ user.height }}, 体重:{{ user.weight }}</li>    {% endfor %}</ul></body></html>


通过 jinjia2 的语法,将后端 python 传入的用户数据分别以无序的形式打印出来。后端 flask 在向前端传递值时,从 MongoDB 中查出的是以变量名为 users 传到此页面上。


遍历每条用户信息,将符合的用户信息以无序的形式展现在网页上。


2. flask 涉及的代码:


首先,观察下 flask结合 pymongo 的插件开启数据库实例,和原来直接使用 pymongo 的区别。


开启数据库实例对比:


Flask-PyMongo:

from flask import Flask, render_templatefrom flask_pymongo import PyMongo
app = Flask(__name__)app.config['DEBUG'] = True # 开启 debugmongo = PyMongo(app, uri="mongodb://localhost:27017/traffic")  # 开启数据库实例


pymongo:

import pymongo client = pymongo.MongoClient(host='127.0.0.1') #连接


不难看出,flask的插件中,直接将数据库的名字 traffic 作为 url 地址写入其中,在接下来使用的时候,便可以不用去选定库名了。




对比下查询操作:


@app.route('/user/<string:age>')def query_user(age):    if age:        users = mongo.db.person.find({'age': age})        print(type(users))        print(users)        if users:            return render_template('user.html', users=users)        else:            return 'No user found!'
if __name__ == "__main__": app.run(host='127.0.0.1', port=8080)


这部分代码是通过设定路由函数,当我们访问 /user/age 时,便可以将年龄作为参数条件,去查询数据库中的用户信息。


Flask-PyMongo:

users = mongo.db.person.find({'age': age})


pymongo:

db = client.trafficcollections = db.person  # 创建集合,student 相当于 mysql 的表名result2 = collections.find({'age': '22'})


发现了吧,其实除了开启数据库实例的时候不同,剩下关键查询时的操作都是一样的!所以就不一一介绍了,想看具体操作可以回顾 pymongo 操作的 3 篇文章。


6

总结


网页版相关教程写到这里就结束了,所有教程都是很基础的入门教程。历时一个月,终于完成啦,关于 flask 和 mongo 的知识点其实很多,但是可以通过去查阅官方文档来帮助学习。用到的时候,去查文档就好了!


离实时交通的项目,就差一个如何去调用高德地图提供的接口讲解了。下篇打算写下,如何使用 requests 库来调用高德地图提供的数据,以便自己的项目使用!7c324cb9ac05ee518b89f8ece493019b.webp


今天这篇文章略短,篇幅多以代码为例讲解,大家如果有什么问题,欢迎留言区留言!712f83479d63d1767bb3d4fa35f6ac02.webp712f83479d63d1767bb3d4fa35f6ac02.webp712f83479d63d1767bb3d4fa35f6ac02.webp





▼往期精彩回顾▼咪哥的思维认知日记(三) - 赚钱思维
Python操作MongoDB数据库(二)
Python操作MongoDB数据库(一)



13685b1142579bf19449bb1c0a1c6af9.webp

599f0ccf0b80ee4bae38fcd9d5aa1a0b.webp你点的每个在看,我都认真当成了喜欢
good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter