当用户管理系统遇上python和mongodb后……
Overview:
- 环境
- 前言
- 效果图
- mongdb安装
- 代码涉及知识点
- 关于windows的cmd下执行python文件显示中文乱码的问题
- 总结
0.环境
操作系统:Windows
Python版本:3.6.0
MongoDB版本:4.0.6
1.前言
同学们还记得,前一次小胖用python结合json文本存储实现的用户管理系统么?
注:详见「手把手教你用python实现一个简单用户管理系统」
现在小胖将这个代码进行了升级,改成用mongodb来存储用户数据。这样又能学到python操作mongodb的用法了有没有。
2.效果图
2.1 修改密码
2.2 录入用户
2.3 查找用户
2.4 删除用户
2.5 mongdb 中的数据格式
3.mongdb安装
3.1 下载
下载链接:
https://www.mongodb.com/download-center/community
注:官网下载很慢,同学自己搞个会员加速下,你懂的。
3.2 安装
基本是一路下一步,需要注意的地方小胖网上找了几张图来说明。
这里可以自定选择需要安装的东西(小胖选择完全安装,随便你们):
选择安装路径:
但是需要注意不要选择一个叫 "install mongoDB compass" 的东西,否则可能要很长时间都一直在执行安装,MongoDB Compass 是一个图形界面管理工具。
注:小胖自己电脑上下载的是:mongodb-win32-x86_64-2008plus-ssl-4.0.6-signed.msi 这个版本
3.3 配置环境变量
找到mongodb的安装目录,像下面这样配置就行了:
3.4 启动服务端
小胖将mongodb数据目录指定到了D:\mongodb\底下,这个底下会生成两个目录,data和log。接下来在D:\mongodb\data\这个路径底下再新建一个目录db。
接下来打开cmd,在命令行里执行以下命令:
mongod --dbpath "D:\mongodb\data\db"。
你就会看到mongodb启动了,像下面这样:
3.5 客户端连接
cmd执行mongo即可
如果mongodb服务端监听在非本地地址,后面添加--host参数填入目标ip地址即可:
4.代码涉及知识点
4.1 依赖包安装
pip install pymongo
4.2 pymongo的用法
连接数据库:
插入数据
insert和save的区别如下:
- 在插入数据时不指定'_id'这个字段的情况下没有区别
- 在插入数据时指定'_id'这个字段的情况下,如果插入的数据和数据库已存在的'_id'相同,save会更新数据库的值,而insert会报错,报错内容为键重复
注:本文末提供的代码中,插入数据没有指定'_id',在这种情况下,mongodb会自动帮你生成一个'_id',类似这样{'_id': ObjectId('5c96f27b0988c31554f2bd64'), '用户名': 'hahaha444', '年龄': '48', '电话': '44444'},所以用save还是insert在这里没有区别
查询数据(查询不到则返回None)
更新数据
删除数据
5.关于windows的cmd下执行python文件显示中文乱码的问题
主要是编码格式的问题,windows默认是gbk编码格式。
方法如下:
- 确保py文件是UTF-8编码存档的。
- 在CMD窗口输入CHCP 65001 回车。(65001是win系统UTF-8的代码)
然后就能正常显示了
6.总结
mongodb的使用还比较复杂的,同学们只要学会了基本用法,就可以开始学着敲本文的代码了。
如果同学们自己实现了,别忘了留言告诉我。有问题也可以留言给我,我们一起讨论。
关注公众号「Python专栏」,后台回复:zsxq08,获取本文全套代码。
当用户管理系统遇上python和mongodb后……的更多相关文章
- 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录
目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 Python语言是目前很火热的语言,极大的促进了人工智能发展.你知道在ArcGIS中也会有python的身影吗?事实上,在ArcG ...
- C++-Typedef结构体遇上指针
继Typedef遇上结构体数组后,我们又产生了新的疑问. 上一期地址:https://www.cnblogs.com/lemaden/p/10122929.html 昨天一位朋友又问我了,说结构体数组 ...
- python用户管理系统
学Python这么久了,第一次写一个这么多的代码(我承认只有300多行,重复的代码挺多的,我承认我确实垃圾),但是也挺不容易的 自定义函数+装饰器,每一个模块写的一个函数 很多地方能用装饰器(逻辑跟不 ...
- K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统
据调查,如今仍有60%的医药企业,存在合规经营和利润下降的困扰,在“研”.“产”.“供”.“销”的运营过程中,时时伴随着严苛的管理政策和法规.如何加强企业跨部门.跨组织.跨业务线的执行能力,始终是管理 ...
- 使用Python操作MongoDB
MongoDB简介(摘自:http://www.runoob.com/mongodb/mongodb-intro.html) MongoDB 由C++语言编写,是一个基于分布式文件存储的开源数据库系统 ...
- MVC遇上bootstrap后的ajax表单模型验证
MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...
- Python 操作 mongodb 数据库
原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...
- 当创业遇上O2O,新一批死亡名单,看完震惊了!
当创业遇上O2O,故事就开始了,总投入1.6亿.半年开7家便利店.会员猛增至10万……2015半年过去后,很多故事在后面变成了一场创业“事故”,是模式错误还是烧钱过度?这些项目的失败能给国内创业者带来 ...
- LoadRunner - 当DiscuzNT遇上了Loadrunner(下) (转发)
当DiscuzNT遇上了Loadrunner(下) 在之前的两篇文章中,基本上介绍了如何录制脚本和生成并发用户,同时还对测试报告中的几个图表做了简单的说明.今天这篇文章做为这个系列的最后一篇,将会介绍 ...
随机推荐
- Servlet校验密码之Mariadb篇
Servlet校验密码之Mariadb篇 先放图-- 数据库: 效果图: 整体来说与上一篇差距不大,这次主要是采用数据库来进行校验,我使用的是Mariadb,安装与配置不用我说 主要有一点,导入连接器 ...
- .Net Core小技巧 - Hosted Services + Quartz实现定时任务调度
背景 之前一直有朋友问,.Net Core + Linux环境有没有类似Windows服务的东西.其实是有的,我了解的方法有两种: #1 创建一个ASP.Net Core的Web项目(如Web API ...
- 记一次线上Zabbix对Redis监控实录
前言:Redis作为缓存服务器我想大家都比较的熟悉,那么,如果想要更好的维护和监控,那么我们会对其redis服务器统一监控起来,如何监控呢?如果在生产环境一台服务器部署多个redis,这样就会出现多个 ...
- php unicode编码和字符串互转
php字符串转Unicode编码, Unicode编码转php字符 百度了很多,都一样, 要么不对, 要不就是只是把字符串的汉字转Unicode 经过多次试验查找, 找到了如下方法, 注意:字符串编码 ...
- python @property的用法及含义全面解析
在接触python时最开始接触的代码,取长方形的长和宽,定义一个长方形类,然后设置长方形的长宽属性,通过实例化的方式调用长和宽,像如下代码一样. class Rectangle(object): de ...
- ES6躬行记(15)——箭头函数和尾调用优化
一.箭头函数 箭头函数(Arrow Function)是ES6提供的一个很实用的新功能,与普通函数相比,不但在语法上更为简洁,而且在使用时也有更多注意点,下面列出了其中的三点: (1)由于不能作为构造 ...
- JavaOOP笔记
http://note.youdao.com/noteshare?id=bbdc0b970721e40d327db983a2f96371
- android BLE Peripheral 做外设模拟设备,供ios、android 连接通讯。
为了能让其它设备可以发现其设备,先启动特定广播.看自己需要什么广播格式. 对于广播可见的mac address: 在调用startAdvertising();时,mac address 就会改变. 并 ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习9
#include <iostream> #include <fstream> #include <cstdlib> #include <string> ...
- H5 _拖放使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...