python 之 MongoDB

一、pymongo安装

Python连接MongoDB需要MongoDB的驱动,使用pymongo驱动来连接。

1、使用pip来安装pymongo:

$ python3 -m pip3 install pymongo
#指定版本
$ python3 -m pip3 install pymongo==3.5.1
#更新pymongo命令
$ python3 -m pip3 install --upgrade pymongo

2、easy_insatll安装

$ python -m easy_install pymongo
#更新
$ python -m easy_install -U pymongo

执行结果:

 

二、创建数据库

创建数据库需要使用MongoClient对象,并指定连接的URL地址和要创建的数据库名。

实例:

#连接mongodb
myclient = pymongo.MongoClient("mongodb://localhost:27017")
#创建数据库
mydb = myclient["mydb"]

三、增、删、改、查等操作

1、增加数据

使用insert_one()和insert_many()函数实现集合数据的插入。

2、查询数据

使用find()和find_one()函数来查询数据库中的数据。

3、修改数据

使用update_one()和update_many()实现更新数据。

4、数据排序

使用sort()函数来对数据排序,1表示升级,-1表示降序。

5、删除数据

使用delete_one()和delete_many()来删除集合中的数据,drop()来删除集合

完整实例:

import pymongo

#1、连接mongodb
myclient = pymongo.MongoClient("mongodb://localhost:27017")


#2、创建数据库
mydb = myclient["mydb"]

#判断数据库是否存在
dblist = myclient.list_database_names()
if "mydb" in dblist:
    print("数据库已存在")

#创建集合(表)
mycol = mydb["my_col"]

#判断集合是否存在
collist = mydb.list_collection_names()
if "my_col" in collist:
    print("集合已存在")


#3、插入数据
#插入单条文档数据
mydict = {"name":"小明", "sex":"M", "grade":98}
x = mycol.insert_one(mydict)
print(x)
#返回_id字段,即插入文档的属性ID值
print(x.inserted_id)

#插入多个文档对象
mydictlist = [
    {"name":"小芳", "sex":"F", "grade":98},
    {"name":"小丽", "sex":"F", "grade":100},
    {"name":"小强", "sex":"M", "grade":59}
]
y = mycol.insert_many(mydictlist)

#输出所有文档的id值
print(y.inserted_ids)

#在终端输入命令查看数据是否插入成功
#use mydb
#db.my_col.find()

#插入指定_id的多个文档
mydictlist2 = [
    {"_id":1, "name":"小明", "sex":"M", "grade":98},
    {"_id":2, "name": "小芳", "sex": "F", "grade": 98},
    {"_id":3, "name": "小丽", "sex": "F", "grade": 100},
    {"_id":4, "name": "小强", "sex": "M", "grade": 59}
]
z = mycol.insert_many(mydictlist2)

print(z.inserted_ids)


#4、查询
#查询一条数据
sel1 = mycol.find_one()
#查询集合中所有数据
for i in mycol.find():
    print(i)

#查询指定字段的数据,find方法内的是查询条件,相当于SQL中select name,sex from my_col;
#其中0为不返回显示,1为返回显示
for i in mycol.find({}, {"_id": 0, "name": 1, "sex": 1}):
    print(i)

#除了 _id,你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然
#以下实例处理sex字段外,其他字段都返回
for i in mycol.find({}, {"sex": 0}):
    print(i)

#查询符合条件的数据,相当于select * from my_col where name="小明";
myquery = {"name": "小明"}
for i in mycol.find(myquery):
    print(i)

#高级查询
#相当于SQL:select * from my_col where grade>60 and grade<100;
myquery1 = {"grade": {"$gt":60, "$lt":100}}
for i in mycol.find(myquery1):
    print(i)

#正则表达式查询 相当于:select * from my_col where sex = "%F";
myquery2 = {"sex": {"$regex": "^F"}}
for i in mycol.find(myquery2):
    print(i)

#返回指定条数,相当于:select * from my_col limit 2;
myresult = mycol.find().limit(2)
for i in myresult:
    print(i)


#5、更新数据
#第一个参数为查询条件,第二个为修改的数据
#更新一条数据
myquery3 = {"name":"小明"}
newvalues = {"$set": {"grade": 100}}
mycol.update_one(myquery3, newvalues)
for i in mycol.find:
    print(i)

#更新多条数据
myquery4 = {"sex": {"$regex": "^F"}}
newvalues1 = {"$set": {"grade": 101}}
x = mycol.update_many(myquery4, newvalues1)
#modifed_count计算修改的条数
print(x.modifed_count, "文档已修改")


#6、数据排序
#第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
#按grade排序
mydoc = mycol.find().sort("grade", -1)


#7、删除数据
#该方法第一个参数为查询对象,指定要删除哪些数据
#删除一条数据,删除name为小明的数据
mycol.delete_one(myquery3)

#删除多条数据
#删除所有匹配的数据
mycol.delete_many(myquery4)

#删除集合中所有文档
mycol.delete_many({})

#删除集合
mycol.drop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值