1. pymongo
-
pymongo:python访问mongodb的接口
-
安装: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()方法
* 如果是读取,直接从数据库读出数据写入文件