MongoDB数据库入门4 Pythn交互

1. pymongo

  1. pymongo:python访问mongodb的接口

  2. 安装:python3 -m pip3 install pymongo

3)pymongo的使用步骤

  • 第一步:创建mongodb连接对象,建立跟
    服务器的连接
  • 第二步:获取数据库对象
  • 第三步:获取集合对象
  • 第四步:执行操作
  • 第五步:关闭连接


示例1:列出所有数据库,见show_dbs.py
# show_dbs.py
# 列出服务器上所有的数据库
import pymongo
# 1. 建立到服务器的连接: MongoClient
conn=pymongo.MongoClient("localhost",27017)
# 2. 列出所有库
dblist = conn.database_names() 
if not dblist:
    print("dblist is none")
else:
    for db in dblist:
        print("dbname:", db)
# 3. 关闭数据库
conn.close()
 示例2:查询  见query.py
# query.py
# mongodb查询示例
import pymongo

# 1. 创建连接对象, 建立到服务器之间的连接
conn=pymongo.MongoClient("localhost",27017)
#conn=pymongo.MongoClient("mongodb://localhost:27017")
# 2. 获取数据库对象
dblist = conn.database_names()
dbname = "test"
if dbname in dblist:
    mydb = conn["test"]#获取数据库对象,相当于use test
    mycol = mydb["acct"]#获取集合对象
    #query = {} #不带筛选条件查询
    #query = {"acct_name":"Tom"}#根据账户名查询
    # query = {"acct_no":"622345000002", \
    #          "acct_name":"Tom"}#根据账户名查询
    #query = {"balance":{"$gt":5000}} #余额大于5000
    query={"$or":[{"acct_name":"Tom"},\
                  {"acct_name":"Emma"}]}#或条件
    #project = {"_id":0} #指定域是否显示:不显示_id域
    project = {"_id":False, "acct_no":True, \
               "acct_name":True, "balance":True}
    docs = mycol.find(query, project)#执行查询
    for doc in docs: #遍历查询结果
        #print(doc)  #打印全部
        # 取指定域
        acct_info = "帐号:%s, 户名:%s, 余额:%f" % \
        (doc["acct_no"],doc["acct_name"],\
        doc["balance"])        
        print(acct_info)   
conn.close() #关闭连接   
 示例3:查询排序  见sort.py
# sort.py
# 查询排序示例
import pymongo

conn=pymongo.MongoClient("localhost",27017)
dblist = conn.database_names()#获取库列表
dbname = "test"
if dbname in dblist:
    mydb = conn[dbname]#获取库对象
    mycol = mydb["acct"]#获取集合对象
    query={}

    docs = mycol.find(query)#执行查询
    sortedDocs = docs.sort([("balance",\
                    pymongo.ASCENDING)])
    for doc in sortedDocs:#遍历排序后的结果集
        acct_info="帐号:%s,户名:%s,余额:%f" % \
        (doc["acct_no"],doc["acct_name"],doc["balance"])
        print(acct_info)

conn.close()
 示例4:插入
       - insert()   插入一笔或多笔
	   - insert_one()  插入一笔
	   - insert_many()  插入多笔
	   - save()  如果ID存在就更新,否则插入
 示例5:修改
 - update(query,updata,upsert=True,multi=False)
    query:筛选条件
	updata:修改内容
	upsert:没有满足条件数据时是否插入
	multi:是否修改多行

    update_one
	update_many
	见update.py
# update.py
# 修改示例
import pymongo

conn=pymongo.MongoClient("localhost",27017)
dblist = conn.database_names()
dbname = "test"
if dbname in dblist:
    mydb = conn[dbname]#取库对象
    mycol = mydb["acct"]#取集合对象
    query={"acct_no":"622345000003"}
    new_value={"$set":{"balance":77.77}}
    ret = mycol.update_one(query, \
                     new_value,\
                       False,False)
    print("共修改%d笔"%ret.modified_count)
conn.close()
 示例6:删除
   delete_one
   delete_many
   见delete.py
 
 示例7:文件存取
   存文件步骤:
   第一步:打开文件,读取数据
   第二步:转换成mongodb的存储格式bson
           调用bson.binary.Binary(data)
		   执行转换
   第三步:插入到数据库,insert()方法

   * 如果是读取,直接从数据库读出数据写入文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值