网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
asabeneh@Asabeneh:~/Desktop$ mkdir python_for_web
asabeneh@Asabeneh:~/Desktop$ cd python_for_web/
asabeneh@Asabeneh:~/Desktop/python_for_web$ virtualenv venv
asabeneh@Asabeneh:~/Desktop/python_for_web$ source venv/bin/activate
(env) asabeneh@Asabeneh:~/Desktop/python_for_web$ pip freeze
(env) asabeneh@Asabeneh:~/Desktop/python_for_web$ pip install Flask
(env) asabeneh@Asabeneh:~/Desktop/python_for_web$ pip freeze
Click==7.0
Flask==1.1.1
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
Werkzeug==0.16.0
(env) asabeneh@Asabeneh:~/Desktop/python_for_web$
我们创建了一个名为 python_for_web 的项目主管。在项目中,我们创建了一个虚拟环境venv,它可以是任何名称,但我更喜欢称之为venv。然后我们激活了虚拟环境。我们使用 pip freeze 检查项目目录中已安装的包。pip freeze 的结果是空的,因为一个包还没有安装。
现在,让我们在项目目录中创建 app.py 文件并编写以下代码。app.py 文件将是项目中的主文件。下面的代码有flask模块,os模块。
26.4创建路由
回家路线。
#让我们
从 flask 导入 flask import Flask
import os #导入操作系统模块
app = Flask ( __name__ )
@app.route('/') # 这个装饰器创建 home 路由
def home ():
return '<h1>Welcome</h1>'
@app.route('/about')
def about ():
return '<h1>About us</h1>'
如果 __name__ == '\_\_main\_\_' :
#部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
要运行flask 应用程序,请在主flask 应用程序目录中编写python app.py。
运行python app.py 后,检查本地主机 5000。
让我们添加额外的路线。创建关于路由
#让我们
从 flask 导入 flask import Flask
import os #导入操作系统模块
app = Flask ( __name__ )
@app.route('/') # 这个装饰器创建 home 路由
def home ():
return '<h1>Welcome</h1>'
@app.route('/about')
def about ():
return '<h1>About us</h1>'
如果 __name__ == '\_\_main\_\_' :
#部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
现在,我们在上面的代码中添加了 about 路由。如果我们想渲染一个 HTML 文件而不是字符串呢?可以使用函数render_templae渲染 HTML 文件。让我们创建一个名为 templates 的文件夹,并在项目目录中创建 home.html 和 about.html。让我们也从flask导入render_template函数。
26.5创建模板
在模板文件夹中创建 HTML 文件。
主页.html
<!DOCTYPE html >
< html lang =" en " >
< head >
< meta charset =" UTF-8 " />
<元 名称="viewport" content =" width=device-width, initial-scale=1.0 " / >
< title >首页</ title >
</ head >
< body >
< h1 >Welcome Home</ h1 >
</ body >
</ html >
关于.html
<!DOCTYPE html >
< html lang =" en " >
< head >
< meta charset =" UTF-8 " />
<元 名称="viewport" content =" width=device-width, initial-scale=1.0 " / >
< title >关于</ title >
</ head >
< body >
< h1 >关于我们</ h1 >
</ body >
</ html >
26.6Python脚本
app.py
# 让我们
从 flask 导入 flask import Flask , render_template
import os # 导入操作系统模块
app = Flask ( __name__ )
@app.route('/') # 这个装饰器创建 home 路由
def home ():
return render_template ( 'home.html' )
@app.route('/about')
def about():
返回 render_template('about.html')
如果 __name__ == '\_\_main\_\_' :
#部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
如您所见,要转到不同的页面或导航,我们需要导航。让我们为每个页面添加一个链接,或者让我们创建一个用于每个页面的布局。
26.7导航
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
现在,我们可以使用上面的链接在页面之间导航。让我们创建处理表单数据的附加页面。你可以叫它任何名字,我喜欢叫它 post.html。
我们可以使用 Jinja2 模板引擎将数据注入到 HTML 文件中。
# 让我们
从 flask 导入 flask import Flask , render_template , request , redirect , url_for
import os # 导入操作系统模块
app = Flask ( __name__ )
@app.route ( '/' ) # 这个装饰器创建 home 路由
def home ():
techs = [ 'HTML' , 'CSS' , 'Flask' , 'Python' ]
name = '30 Days Of Python Programming'
return render_template ( ' home.html' , techs = techs , name = name , title = 'Home' )
@app.route( '/about' )
def about ():
name = '30 Days Of Python Programming'
return render_template ( 'about.html' , name = name , title = 'About Us' )
@app.route( '/post' )
def post ():
name = 'Text Analyzer'
return render_template ( 'post.html' , name = name , title = name )
如果 __name__ == '\_\_main\_\_' :
#部署
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
让我们也看看模板:
主页.html
<!DOCTYPE html >
< html lang =" en " >
< head >
< meta charset =" UTF-8 " />
<元 名称="视口" content =" width=device-width, initial-scale=1.0 " / >
< title >首页</ title >
</ head >
<body>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
<h1>Welcome to {{name}}</h1>
<ul>
{% for tech in techs %}
<li>{{tech}}</li>
{% endfor %}
</ul>
</body>
</html>
关于.html
<!DOCTYPE html >
< html lang =" en " >
< head >
< meta charset =" UTF-8 " />
<元 名称="视口" content =" width=device-width, initial-scale=1.0 " / >
< title >关于我们</ title >
</ head >
<body>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
<h1>About Us</h1>
<h2>{{name}}</h2>
</body>
</html>
26.8创建布局
在模板文件中,有很多重复的代码,我们可以写一个布局,我们可以删除重复。让我们在模板文件夹中创建 layout.html。创建布局后,我们将导入到每个文件中。
提供静态文件
在您的项目目录中创建一个静态文件夹。在静态文件夹中创建 CSS 或样式文件夹并创建一个 CSS 样式表。我们使用url_for模块来提供静态文件。
布局.html
<!DOCTYPE html >
< html lang =" en " >
< head >
< meta charset =" UTF-8 " />
<元 名称="视口" content =" width=device-width, initial-scale=1.0 " / >
< link
href =" https://fonts.googleapis.com/css?family=Lato:300,400|Nunito:300,400|Raleway:300,400,500&display=swap "
rel ="样式表"
/>
< link
rel ="样式表"
href =" {{url\_for('static', filename='css/main.css') }} "
/>
{% if title %}
<title>30 Days of Python - {{ title}}</title>
{% else %}
<title>30 Days of Python</title>
{% endif %}
</head>
<body>
<header>
<div class="menu-container">
<div>
<a class="brand-name nav-link" href="/">30DaysOfPython</a>
</div>
<ul class="nav-lists">
<li class="nav-list">
<a class="nav-link active" href="{{ url\_for('home') }}">Home</a>
</li>
<li class="nav-list">
<a class="nav-link active" href="{{ url\_for('about') }}">About</a>
</li>
<li class="nav-list">
<a class="nav-link active" href="{{ url\_for('post') }}"
>Text Analyzer</a
>
</li>
</ul>
</div>
</header>
<main>
{% block content %} {% endblock %}
</main>
</body>
</html>
现在,让我们删除其他模板文件中的所有重复代码并导入 layout.html。href 使用url_for函数和路由函数的名称来连接每个导航路由。
主页.html
{% extends 'layout.html' %} {% block content %}
<div class="container">
<h1>Welcome to {{name}}</h1>
<p>
此应用程序清理文本并分析单词、字符和
文本中出现频率最高的词。通过单击文本分析器检查它
菜单。您需要以下技术来构建此 Web 应用程序:
</ p >
<ul class="tech-lists">
{% for tech in techs %}
<li class="tech">{{tech}}</li>
{% endfor %}
</ul>
</div>
{% endblock %}
关于.html
{% extends 'layout.html' %} {% block content %}
< div class =" container " >
< h1 >关于{{name}} </ h1 >
< p >
这是 30 天的 Python 编程挑战。如果你一直在编码
到目前为止,你太棒了。祝贺你的工作做得好!
</ p >
</ div >
{% endblock %}
后.html
{% extends 'layout.html' %} {% block content %}
< div class =" container " >
< h1 >文本分析器</ h1 >
< form action =" https://thirtydaysofpython-v1.herokuapp.com/post" method="POST">
< DIV >
< textarea的 行=” 25 “名称=”内容“的自动对焦> </ textarea的>
</ div >
<div >
< input type =" submit " class =" btn " value ="处理文本"/>
</ div >
</ form >
</ div >
{% 结束块 %}
请求方法,有不同的请求方法(GET、POST、PUT、DELETE)是常见的请求方法,它们允许我们进行 CRUD(创建、读取、更新、删除)操作。
在帖子中,我们将根据请求的类型使用 GET 和 POST 方法替代,请查看下面代码中的外观。请求方法是处理请求方法和访问表单数据的函数。应用程序
# 让我们
从 flask 导入 flask import Flask , render_template , request , redirect , url_for
import os # 导入操作系统模块
app = Flask ( __name__ )
# 停止缓存静态文件
app . 配置[ 'SEND\_FILE\_MAX\_AGE\_DEFAULT' ] = 0
@app.route ( '/' ) # 这个装饰器创建 home 路由
def home ():
techs = [ 'HTML' , 'CSS' , 'Flask' , 'Python' ]
name = '30 Days Of Python Programming'
return render_template ( ' home.html' , techs = techs , name = name , title = 'Home' )
@app.route ( '/about' )
def about ():
name = '30 Days Of Python Programming'
return render_template ( 'about.html' , name = name , title = 'About Us' )
@app.route('/result')
def result():
返回 render_template('result.html')
@app.route ( '/post' , methods = [ 'GET' , 'POST' ])
def post ():
name = 'Text Analyzer'
if request。method == 'GET' :
如果request,则返回 render_template ( 'post.html' , name = name , title = name )
if request.method =='POST':
content = request.form['content']
print(content)
return redirect(url_for('result'))
如果 __name__ == '\_\_main\_\_' :
# 部署
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
到目前为止,我们已经看到了如何使用模板以及如何向模板注入数据,如何进行通用布局。现在,让我们处理静态文件。在project Director中创建一个名为static的文件夹,并创建一个名为css的文件夹。在 css 文件夹中创建 main.css。你的主要。css 文件将链接到 layout.html。
您不必编写css文件,复制并使用它。让我们继续进行部署。
26.9部署
创建 Heroku 帐户
Heroku 为前端和全栈应用程序提供免费部署服务。在heroku上创建一个帐户并为您的机器安装 heroku CLI。安装heroku后写下以下命令
登录 Heroku
asabeneh@Asabeneh: ~ $ heroku 登录
heroku:按任意键打开浏览器登录或 q 退出:
让我们通过单击键盘上的任意键来查看结果。当您按键盘上的任意键时,它将打开 heroku 登录页面并单击登录页面。然后你将本地机器连接到远程 heroku 服务器。如果你连接到远程服务器,你会看到这个。
asabeneh@Asabeneh: ~ $ heroku 登录
heroku:按任意键打开浏览器登录或 q 退出:
打开浏览器到 https://cli-auth.heroku.com/auth/browser/be12987c-583a-4458-a2c2-ba2ce7f41610
登录...进行
已记录在为asabeneh@gmail.com
asabeneh@Asabeneh:~ $
创建需求和Procfile
在我们将代码推送到远程服务器之前,我们需要一些要求
- 要求.txt
- 配置文件
(env) asabeneh@Asabeneh: ~ /Desktop/python_for_web$ pip freeze
Click==7.0
Flask==1.1.1
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
Werkzeug==0.16.0
(env) asabeneh@Asabeneh: ~ /Desktop/python_for_web$ touch requirements.txt
(env) asabeneh@Asabeneh: ~ /Desktop/python_for_web$ pip freeze > requirements.txt
(env) asabeneh@Asabeneh: ~ /Desktop/python_for_web$ cat requirements.txt
Click==7.0
Flask==1.1.1
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
Werkzeug==0.16.0
(env) asabeneh@Asabeneh: ~ /Desktop/python_for_web$ touch Procfile
(env) asabeneh @ Asabeneh: ~ / Desktop / python_for_web $ ls
Procfile 环境/静态/
app.py requirements.txt 模板/
(env) asabeneh@Asabeneh: ~ /Desktop/python_for_web$
Procfile 将具有在我们的 Heroku 上的示例中在 Web 服务器中运行应用程序的命令。
网络:python app.py
将项目推送到heroku
现在,它已准备好部署。在 heroku 上部署应用程序的步骤
- 混帐初始化
- git 添加。
- git commit -m “提交消息”
- heroku 创建“应用程序名称作为一个词”
- git push heroku master
- heroku open(启动部署的应用程序)
这个步骤后,你会得到这样一个应用程序
第 27 天 - Python 与 MongoDB
Python 是一种后端技术,它可以连接不同的数据库应用程序。它可以连接到 SQL 和 noSQL 数据库。在本节中,我们将 Python 与 MongoDB 数据库(noSQL 数据库)连接起来。
27.1MongoDB
MongoDB 是一个 NoSQL 数据库。MongoDB 将数据存储在类似 JSON 的文档中,这使 MongoDB 非常灵活和可扩展。让我们看看 SQL 和 NoSQL 数据库的不同术语。下表将区分 SQL 与 NoSQL 数据库。
SQL 与 NoSQL
在本节中,我们将重点介绍 NoSQL 数据库 MongoDB。让我们通过单击登录按钮在mongoDB上注册,然后单击下一页上的注册。
填写字段并单击继续
选择免费计划
选择最接近的空闲区域并为您的集群指定任何名称。
现在,创建了一个免费的沙箱
所有本地主机访问
添加用户和密码
创建一个 mongoDB uri 链接
选择 Python 3.6 或以上驱动
27.2获取连接字符串(MongoDB URI)
复制连接字符串链接,你会得到这样的东西
mongodb+srv://asabeneh: <密码> @30daysofpython-twxkr.mongodb.net/test ? retryWrites=true & w=majority
不要担心 url,它是将您的应用程序与 mongoDB 连接的一种方式。让我们用您用来添加用户的密码替换密码占位符。
例子:
mongodb+srv://asabeneh:123123123@30daysofpython-twxkr.mongodb.net/test ? retryWrites=true & w=majority
现在,我替换了所有内容,密码为 123123,数据库名称为三十天_python。这只是一个例子,你的密码必须比这强一点。
Python 需要一个 mongoDB 驱动程序来访问 mongoDB 数据库。我们将使用pymongo和dnspython将我们的应用程序与 mongoDB base 连接起来。在您的项目目录中安装 pymongo 和 dnspython。
pip 安装 pymongo dnspython
必须安装“dnspython”模块才能使用 mongodb+srv:// URI。dnspython 是 Python 的 DNS 工具包。它支持几乎所有的记录类型。
27.3将 Flask 应用程序连接到 MongoDB 集群
# 导入flask
from flask import Flask , render_template
import os # 导入操作系统模块
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = py . MongoClient(MONGODB_URI)
print(client.list_database_names())
print(client.list_database_names())
#部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
当我们运行上面的代码时,我们得到了默认的 mongoDB 数据库。
['admin', 'local']
27.3创建数据库和集合
让我们创建一个数据库,如果 mongoDB 中的数据库和集合不存在,则会创建它。让我们创建一个数据库名称三十天_of_python和学生集合。创建数据库
db = client.name_of_databse #我们可以像这样或第二种方式创建数据库
db = client[ ' name\_of\_database ' ]
# 导入flask
from flask import Flask , render_template
import os # 导入操作系统模块
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = py . MongoClient ( MONGODB_URI )
# 创建数据库
db = client . 30_days_of_python
# 创建学生集合并插入文档
db.students.insert_one ({ '姓名':'Asabeneh' ,'国家':'芬兰','城市':'赫尔辛基','时代':250 })
print(client.list_database_names())
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
#部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
创建数据库后,我们还创建了一个学生集合,并使用insert_one()方法插入文档。现在,数据库三十天_of_python和学生集合已创建,文档已插入。检查您的 mongoDB 集群,您将看到数据库和集合。在集合内部,会有一个文档。
[ ['thirty\_days\_of\_python', 'admin', 'local'] ]
如果你在 mongoDB 集群上看到这个,说明你已经成功创建了一个数据库和一个集合。
如果您在图中看到,该文档已经创建了一个长 id 作为主键。每次我们创建一个文档 mongoDB 都会为它创建一个唯一的 id。
27.4将许多文档插入到集合中
该insert_one() 方法一次插入一个项目,如果我们想在任何一次我们使用插入许多文档insert_many()方法或循环。我们可以使用 for 循环一次插入多个文档。
# 导入flask
from flask import Flask , render_template
import os # 导入操作系统模块
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = py . MongoClient ( MONGODB_URI )
学生 = [
{ 'name' : 'David' , 'country' : 'UK' , 'city' : 'London' , 'age' : 34 },
{ 'name' : 'John' , 'country' : '瑞典' , 'city' : 'Stockholm' , 'age' : 28 },
{ 'name' : 'Sami' , 'country' : 'Finland' , 'city' : 'Helsinki' , 'age' : 25 },
]
for student in students:
db.students.insert_one(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
#部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
27.5MongoDB 查找
该find()方法和findOne()方法是在MongoDB中的数据库集合中找到数据常用的方法。它类似于 MySQL 数据库中的 SELECT 语句。让我们使用find_one()方法来获取数据库集合中的文档。
1.*find_one({“_id”: ObjectId(“id”}):如果没有提供id,则获取第一次出现
# 导入flask
from flask import Flask , render_template
import os # 导入操作系统模块
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = py . MongoClient ( MONGODB_URI )
db = client [ 'thirty\_days\_of\_python' ] # 访问数据库
student = db.students.find_one()
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# 部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{ ' \_id ':物件(' 5df68a21f106fe2d315bbc8b '),'名':' Asabeneh ','国':'赫尔辛基','城市':'赫尔辛基','年龄':250}
上面的查询返回第一个条目,但我们可以使用特定的 _id 定位特定的文档。举个例子,用David的id来获取David对象。’_id’:ObjectId(‘5df68a23f106fe2d315bbc8c’)
# 让我们
从 flask import Flask导入flask , render_template
import os #
从 bson导入操作系统模块。objectid import ObjectId # id 对象
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = pymongo . MongoClient ( MONGODB_URI )
db = client [ 'thirty\_days\_of\_python' ] # 访问数据库
student = db.students.find_one({'\_id':ObjectId('5df68a23f106fe2d315bbc8c')})
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
#部署,我们使用ENVIRON
#使之成为生产和开发工作
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'\_id': ObjectId('5df68a23f106fe2d315bbc8c'), 'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}
我们已经通过上面的例子看到了如何使用find_one()。让我们移动一个到find()
2.find():如果我们不传递查询对象,则返回集合中的所有出现。该对象是 pymongo.cursor 对象。
# 让我们
从 flask 导入 flask import Flask , render_template
import os # 导入操作系统模块
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
students = db.students.find()
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 250}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8c'), 'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8d'), 'name': 'John', 'country': 'Sweden', 'city': 'Stockholm', 'age': 28}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
我们可以通过在find({}, {}) 中传递第二个对象来指定要返回的字段。0 表示不包含,1 表示包含但我们不能混合 0 和 1,除了 _id。
# 让我们
从 flask 导入 flask import Flask , render_template
import os # 导入操作系统模块
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
students = db.students.find({}, {"\_id":0, "name": 1, "country":1}) # 0 means not include and 1 means include
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'name': 'Asabeneh', 'country': 'Finland'}
{'name': 'David', 'country': 'UK'}
{'name': 'John', 'country': 'Sweden'}
{'name': 'Sami', 'country': 'Finland'}
27.6用查询查找
在 mongoDB 中找到一个查询对象。我们可以传递一个查询对象,我们可以过滤我们想要过滤掉的文档。
# let's import the flask
from flask import Flask, render_template
import os # importing operating system module
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = pymongo.MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
query = {
"country":"Finland"
}
students = db.students.find(query)
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
# 导入操作系统模块
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient ( MONGODB_URI )
db = client [ 'thirty\_days\_of\_python' ] # 访问数据库
query = {
"country":"Finland"
}
students = db.students.find(query)
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 250}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
使用修饰符查询
# 让我们
从 Flask 导入Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient ( MONGODB_URI )
db = client['thirty\_days\_of\_python'] # accessing the database
query = {
"city":"Helsinki"
}
students = db.students.find(query)
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 250}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
27.7使用修饰符查找查询
# 让我们
从 Flask 导入 Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient ( MONGODB_URI )
db = client['thirty\_days\_of\_python'] # accessing the database
query = {
"country":"Finland",
"city":"Helsinki"
}
students = db.students.find(query)
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 250}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
使用修饰符查询
# 让我们
从 Flask 导入 Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
query = {"age":{"$gt":30}}
students = db.students.find(query)
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 250}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8c'), 'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}
# 让我们
从 Flask 导入 Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
query = {"age":{"$gt":30}}
students = db.students.find(query)
for student in students:
print(student)
{'\_id': ObjectId('5df68a23f106fe2d315bbc8d'), 'name': 'John', 'country': 'Sweden', 'city': 'Stockholm', 'age': 28}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
27.8限制文件
我们可以使用limit()方法限制返回的文档数量。
# 让我们
从 Flask 导入 Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = pymongo.MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
db.students.find().limit(3)
27.9排序查找
默认情况下,排序按升序排列。我们可以通过添加 -1 参数将排序更改为降序。
# 让我们
从 Flask 导入 Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
students = db.students.find().sort('name')
for student in students:
print(student)
students = db.students.find().sort('name',-1)
for student in students:
print(student)
students = db.students.find().sort('age')
for student in students:
print(student)
students = db.students.find().sort('age',-1)
for student in students:
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
升序
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 250}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8c'), 'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8d'), 'name': 'John', 'country': 'Sweden', 'city': 'Stockholm', 'age': 28}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
降序排列
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8d'), 'name': 'John', 'country': 'Sweden', 'city': 'Stockholm', 'age': 28}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8c'), 'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 250}
27.10使用查询更新
我们将使用update_one()方法来更新一项。它需要两个对象,一个是查询,第二个是新对象。第一个人 Asabeneh 的年龄非常令人难以置信。让我们更新 Asabeneh 的年龄。
# 让我们
从 Flask 导入 Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
客户端 = pymongo。MongoClient ( MONGODB_URI )
db = client [ 'thirty\_days\_of\_python' ] # 访问数据库
query = {'age':250}
new_value = {'$set':{'age':38}}
db.students.update_one(query, new_value)
# lets check the result if the age is modified
for student in db.students.find():
print(student)
app = Flask(__name__)
if __name__ == '\_\_main\_\_':
# for deployment we use the environ
# to make it work for both production and development
port = int(os.environ.get("PORT", 5000))
app.run(debug=True, host='0.0.0.0', port=port)
{'\_id': ObjectId('5df68a21f106fe2d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 38}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8c'), 'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8d'), 'name': 'John', 'country': 'Sweden', 'city': 'Stockholm', 'age': 28}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
当我们想一次更新许多文档时,我们使用upate_many()方法。
27.11删除文档
delete_one()方法删除一个文档。所述delete_one()需要一个查询对象参数。它只删除第一次出现。让我们从集合中删除一个约翰。
# 让我们
从 Flask 导入Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = pymongo.MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
![img](https://img-blog.csdnimg.cn/img_convert/4fff3905bc12ebc08bcf4133140dc36f.png)
![img](https://img-blog.csdnimg.cn/img_convert/de2e3bfa15608e931423ffa5f521ae76.png)
![img](https://img-blog.csdnimg.cn/img_convert/2495fdb58a0d3b0ade6dd4d0b033c209.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
d315bbc8b'), 'name': 'Asabeneh', 'country': 'Finland', 'city': 'Helsinki', 'age': 38}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8c'), 'name': 'David', 'country': 'UK', 'city': 'London', 'age': 34}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8d'), 'name': 'John', 'country': 'Sweden', 'city': 'Stockholm', 'age': 28}
{'\_id': ObjectId('5df68a23f106fe2d315bbc8e'), 'name': 'Sami', 'country': 'Finland', 'city': 'Helsinki', 'age': 25}
当我们想一次更新许多文档时,我们使用upate_many()方法。
27.11删除文档
delete_one()方法删除一个文档。所述delete_one()需要一个查询对象参数。它只删除第一次出现。让我们从集合中删除一个约翰。
# 让我们
从 Flask 导入Flask import Flask , render_template
import os # 导入操作系统模块
import pymongo
MONGODB_URI = 'mongodb+srv://asabeneh:your\_password\_goes\_here@30daysofpython-twxkr.mongodb.net/test?retryWrites=true&w=majority'
client = pymongo.MongoClient(MONGODB_URI)
db = client['thirty\_days\_of\_python'] # accessing the database
[外链图片转存中...(img-RoKHGqXX-1715510871227)]
[外链图片转存中...(img-PwP3Iuwe-1715510871228)]
[外链图片转存中...(img-efQ74UUF-1715510871228)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**