Python3操作MongoDB数据库
Python3操作MongoDB数据库
文章目录
- Python3操作MongoDB数据库
- 0. 写在前面
- 1. 安装开源驱动库pymongo
- 2. 参考
0. 写在前面
- Linux:
Ubuntu Kylin 16.04
- MongoDB:
MongoDB3.2.7
- Python:
Anaconda With Python3.7
1. 安装开源驱动库pymongo
pymongo驱动程序可以直接连接MongoDB数据库
zhangsan@node01:~$ conda create -n py39 python = 3.9
zhangsan@node01:~$ conda activate py39
(py39) zhangsan@node01:~$ python3 -m pip install pymongo
Collecting pymongoDownloading pymongo-4.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (479 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 479.2/479.2 kB 37.7 kB/s eta 0:00:00
Installing collected packages: pymongo
Successfully installed pymongo-4.2.0
(py39) zhangsan@node01:~$ vim pyinsert.py
from pymongo import MongoClient
from random import randint
import datetime
client = MongoClient('localhost',27017)
db = client.taobao
order = db.order_info
status = ['A','B','C']
cust_id = ['A123','B123','C123']
price = [500,200,250,300]
sku = ['mmm','nnn']
for i in range(1,100):items = []item_count =randint(2,6)for n in range(item_count):items.append({"sku":sku[randint(0,1)],"qty":randint(1,10),"price":randint(0,5)})new = { "status":status[randint(0,2)], "cust_id":cust_id[randint(0,2)], "price":price[randint(0,3)], "ord_date":datetime.datetime.utcnow(), "items":items }print(new)order.insert_one(new)
print(order.estimated_document_count())
- 启动MongoDB
(py39) zhangsan@node01:/usr/local/mongodb-3.2.7$ mongod --config /mongodb/single/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3493
child process started successfully, parent exiting
- 查看服务
(py39) zhangsan@node01:/usr/local/mongodb-3.2.7$ ps -ef | grep mongo
zhangsan 3493 1 3 00:56 ? 00:00:01 mongod --config /mongodb/single/mongod.conf
zhangsan 3511 3214 0 00:57 pts/0 00:00:00 grep --color=auto mongo
- 执行py程序
(py39) zhangsan@node01:~$ python3 pyinsert.py
pymongo.errors.ConfigurationError: Server at localhost:27017 reports wire version 4, but this version of PyMongo requires at least 6 (MongoDB 3.6).
很明显,此处需要降低驱动pymongo的版本
- 卸载pymongo
(py39) zhangsan@node01:~$ pip uninstall -y pymongo
Found existing installation: pymongo 4.2.0
Uninstalling pymongo-4.2.0:Successfully uninstalled pymongo-4.2.0
(py39) zhangsan@node01:~$ pip3 list
Package Version
------------ ------------
certifi 2022.6.15
pip 22.1.2
setuptools 63.4.1
- 安装pymongo3.6版本
(py39) zhangsan@node01:~$ pip3 install pymongo==3.6
Collecting pymongo==3.6Downloading pymongo-3.6.0.tar.gz (583 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 583.3/583.3 kB 52.1 kB/s eta 0:00:00Preparing metadata (setup.py) ... done
Building wheels for collected packages: pymongoBuilding wheel for pymongo (setup.py) ... doneCreated wheel for pymongo: filename=pymongo-3.6.0-cp39-cp39-linux_x86_64.whl size=272327 sha256=72a9dacdef7afa26cb169debe429964d1b5ab119ee39e7ec4c3eb5c59c5433c0Stored in directory: /home/zhangsan/.cache/pip/wheels/6c/97/2e/74c0fd06fe0df24ded743a8af0707d1b5d618a0e8d321ba85c
Successfully built pymongo
Installing collected packages: pymongo
Successfully installed pymongo-3.6.0
(py39) zhangsan@node01:~$ pip3 list | grep pymongo
pymongo 3.6.0
- 继续报错:
AttributeError: module 'platform' has no attribute 'linux_distribution'
(py39) zhangsan@node01:~$ python3 pyinsert.py
Traceback (most recent call last):File "/home/zhangsan/pyinsert.py", line 1, in <module>from pymongo import MongoClient File "/usr/local/anaconda/envs/py39/lib/python3.9/site-packages/pymongo/__init__.py", line 87, in <module>from pymongo.mongo_client import MongoClientFile "/usr/local/anaconda/envs/py39/lib/python3.9/site-packages/pymongo/mongo_client.py", line 52, in <module>from pymongo.client_options import ClientOptionsFile "/usr/local/anaconda/envs/py39/lib/python3.9/site-packages/pymongo/client_options.py", line 23, in <module>from pymongo.pool import PoolOptionsFile "/usr/local/anaconda/envs/py39/lib/python3.9/site-packages/pymongo/pool.py", line 124, in <module>platform.linux_distribution() if part])),
AttributeError: module 'platform' has no attribute 'linux_distribution'
关于这个error,其实是Python自身的原因
Python从3.8版本开始,已经从平台模块中删除了“linux_distribution()”函数
前文使用的是Python3.9,解决这个问题有两种方法:
- 修改Python3.9源码
- 降低Python版本到3.7
- 新建一个Python3.7虚拟环境
zhangsan@node01:~$ conda create -n pymongo python = 3.7
zhangsan@node01:~$ conda activate pymongo
(pymongo) zhangsan@node01:~$ python3 -m pip install pymongo=3.6
Collecting pymongoDownloading pymongo-3.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (479 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 479.2/479.2 kB 37.7 kB/s eta 0:00:00
Installing collected packages: pymongo
Successfully installed pymongo-3.6.0
- 再次执行py程序,运行成功
(pymongo) zhangsan@node01:~$ python3 pyinsert.py
上述代码中使用了estimated_document_count()
函数,该函数是MongoDB4.0.3的新功能,此处会出现错误,改为count()函数即可
2. 参考
https://stackoverflow.com/questions/63636697/error-module-platform-has-no-attribute-linux-distribution
Python3操作MongoDB数据库相关推荐
- Python3 操作MongoDB数据库
以上一篇的数据为例子. In [1]: import pymongo #引入pymongo模块In [2]: client = pymongo.MongoClient(host = 'localhos ...
- 用python向mongodb插入数据_Python操作MongoDB数据库(一)
Python操作MongoDB数据库(一) 前言 干货文章继续出发!隔的时间有些久了哈,对 MongoDB 安装回顾的同学,可以看下windows环境 <初识 MongoDB 数据库>.这 ...
- Python 操作 MongoDB 数据库!
作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...
- 58 Node.js中操作mongoDB数据库
技术交流 QQ 群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder 的程序人生 1.数据库概述及环境搭建 1.1 为什么要使用数据库 动态网站中的数据都是存储在数据 ...
- PHP操作mongodb数据库操作类
最近的项目开发中使用的数据库是mongodb数据库,因为小编的公司也是刚刚使用mongodb数据库,所以之前没有封装好的mongodb数据库操作类拿来使用,所以小编在项目中自己封装了一个mongodb ...
- Lua 操作 MongoDB 数据库实例
最近有个工作是使用Nginx + Lua实现一个操作MongoDB数据库的API,主要实现其count和query功能.之前没有写过Lua,于是也就勉强着上手,在cloudwu的 lua-mongo ...
- python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例
本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...
- Nodejs 操作 MongoDb 数据库
一.在 Nodejs 中使用 Mongodb 在前面的博文我们给大家讲了如何使用命令操作 Mongodb,这篇博文开始我们给大家讲解一 下如何使用 Nodejs 来操作 Mongodb 数据库 Nod ...
- 使用mongoose 在 Node中操作MongoDB数据库
MongoDB 关系型和非关系型数据库 关系型数据库(表就是关系,或者说表与表之间存在关系). 所有的关系型数据库都需要通过sql语言来操作 所有的关系型数据库在操作之前都需要设计表结构 而且数据表还 ...
最新文章
- 集成电路:迎国产替代浪潮,设计领域机会凸显
- 基于Proxy的小程序状态管理
- windows7环境下使用pip安装MySQLdb
- 醒醒,迪卡侬请停止“低调”!
- VMWare ubuntu虚拟机异常关闭打开报错:该虚拟机似乎正在使用中(下班虚拟机最好关闭,免得又异常关闭导致问题)(千万别在虚拟机下win+L锁屏,解锁后就打不开虚拟机了)
- location.search
- python嵌套列表字典_python中嵌套列表转为字典
- Windows 9信息曝光:统一开发接口、整合Cortana到任务栏
- Java基础11-封装(思想、访问权限、this、构造方法)
- 电脑提示0xc0000719设备未迁移如何解决
- [有限元] 四结点三角形单元和五结点三角形单元的形函数
- JavaScript MD5加密实现
- java类 (二):内部类
- matlab·计算机视觉·工具箱
- Rhythmbox中mp3中文乱码问题
- 怎么把视频里的一小段制作成gif图片?教你视频片断做成GIF
- 通讯录查询系统的设计与实现
- 分享本电子书Sql Server 20008 internals
- pyecharts第十节、地图(三、省份地图)
- 机器人李继红_电力设备
热门文章
- 基于Smart200的PTO脉冲发送(步进电机)及基本运动控制向导的设置内容
- 15单片机通过WIFI模块ESP8266实现手机远程监控可燃气体浓度
- 苹果手机怎么用流量下载大于200M的应用
- 调试经验——使用VBA显示Excel中所有faceId对应的图标 (Display all FaceID Icons in Excel with VBA)
- 香港旅游攻略香港旅游购物指南
- 【ArcGIS自定义脚本工具】利用聚合方法批量生成分辨率降低版本的栅格
- 那些年啊,那些事——一个程序员的奋斗史 ——32
- 阿里云视频点播测试问题解决 (获取播放地址播放)
- 产品设计太难了!别怕,给你5个优秀案例照着学
- 想了3年,实现只用了3个月