赞
踩
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。