2-4 Python 访问MongoDB

10 篇文章 1 订阅

目录

2-4 Python 访问MongoDB

第一关:python连接MongoDB写入数据

第二关:检索文档

第三关:更新数据


2-4 Python 访问MongoDB

第一关:python连接MongoDB写入数据

1、导入pymongo库

import pymongo

2、使用MongoClient对象创建与数据库服务器的连接:

(1)与数据库访问器连接

client= pymongo.MongoClient(host='127.0.0.1',port=12717)

(2)连接到具体的mongodb服务器或副本集:

client=pymongo.MongoClient(host='10.90.9.102',port=12718)

client=pymongo.MongoClient(host=’10.90.9.101:27018,10.90.9.102: 12718,10.90.9.103:27018')

创建数据库 runoobdb :

1、mydb = client["runoobdb"]    mydb(相当于别名吧)=client[“数据库名称”]

2、db=client.mydb   db=client.databaseName  有则访问,无则创建!!!

创建集合:collection:

mycol=mydb["collection"]

3、访问数据库

创建MongoClient实例后,就可以访问服务器中的任何数据。

如果要访问一个数据库,可以将其当作属性一样进行访问:

db = client.myDB

也可以使用函数方式访问,如果不存在数据库,则系统会自动创建数据库

db = client.get_database("myDB")

注意:

在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

4、集合操作

(1)插入文档

在数据库中存储数据时,首先指定使用的集合,然后使用集合的insert_one()方法插入文档

mydict = { "name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com" }

x = mycol.insert_one(mydict)

(2)可以使用方法insert_many()同时插入多个文档。

mylist = [

  { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },

  { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },

  { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },

  { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },

  { "name": "Github", "alexa": "109", "url": "https://www.github.com" }

]

x = mycol.insert_many(mylist)

5、输出所有插入文档的_id值

print(x.inserted_ids)

 

第二关:检索文档

使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。

示例:

import pymongo

myclient= pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["runoobdb"]

mycol = mydb["sites"]         //创建数据库与集合

示例1、//查询mycol的sites集合中的所有数据并且输出:

for x in mycol.find():           

  print(x)

用python测试

 

示例2、//_id为0不输出,输出name和alexa部分的字段 :

for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }):    

  print(x)             

 示例3、//会报错

for x in mycol.find({},{ "name": 1, "alexa": 0 }):

  print(x)

 

示例4、查询姓名为RUNOOB的,将查询存储到myquery里面,将结果存储到mydoc里面

myquery = { "name": "RUNOOB" }

mydoc = mycol.find(myquery)

for x in mydoc:

  print(x)

 

编程测试:

 

第三关:更新数据

1、更新数据

my_set.update( #查询条件,#update的对象和一些更新的操作符)

update_one() 方法只能修匹配到的第一条记录

update_many() 修改所有匹配到的记录

示例:修改名字以F开头的alexa为“123“:

myquery = { "name": { "$regex": "^F" } }

newvalues = { "$set": { "alexa": "123" } }

x = mycol.update_many(myquery, newvalues)

print(x.modified_count, "文档已修改")

2、删除数据

delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

示例:删除名字以F开头的信息

myquery = { "name": {"$regex": "^F"} }

x = mycol.delete_many(myquery)

print(x.deleted_count, "个文档已删除")

编程测试:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值