数据库操作(python3.X)

mongodb
需要导入的包

from pymongo import MongoClient  #数据库的包
from urllib import parse  #编码的包

基本数据库信息

mongo = {
    "host":"888.88.888.888",
    "user":"root",
    'pwd':"123456"
}

连接数据库

def get_mongo_connect(host, user, pwd):
    if '/' in pwd or '@' in pwd:#如果密码中有特殊符号进行编码
        pwd = parse.quote_plus(pwd)
    conn = MongoClient('mongodb://' + user + ':' + pwd + '@' + host)
    return conn

链接到对应的数据库表和集合

def get_db_obj(db, col):
    conn = get_mongo_connect(mongo['host'], mongo['user'], mongo['pwd'])
    db = conn[db]
    col = db[col]
    return col

调用数据库

db = get_db_obj("库名","集合名")

查询数据库

result = db.find()#查询所有
result = db.find{"key":"value"}#条件查询
for res in result:
	print(res)

# mongodb条件查询:
'''
> : $gt
< : $lt
>= : $gte
<= : $lte
$exists : 判断字段是否存在
$in:(m,n,) : 提取在指定内容中的数据

$all[n,m,...]: 查找数据库中某一条数据是否全部包含all中的数据, 如果'全部'包含则返回该条数据,否则不反悔

$push: 向已有数据源中按照字段进行数据的添加.基于'列表'

$pop: 将数据库中对应数据的某一个字段数据按照指定方式进行删除. 其中 -1:从列表的起始位置开始删除; 1: 从列表的最后位置开始删除

$pull: 将对应数据中指定的数据分布进行删除(按值删除)

$or : 或者指令, 该指令通常作为字典的键, 其对应的值是一个'列表'结构,列表中每一个元素之间是'并列'的关系.

"在字典中所有的键值对之间代表的是一种'并且'的关系."

.sort('age',1): 将查找之后的结果按照指定的字段进行排序, 1为升序,-1为降序

.skip(m).limit(n): 将查找结果的取值显示为,跳过m条数据,显示n条数据.  即只显示m+1~m+1+n的数据
'''
#举例
#查询年龄16以下或24以上,name是ab的数据
res1 = db.find({
    '$or':[
        {'age':{'$gte':24}},
        {'age':{'$lte':16}}
    ],
    'name':'ab'
})

插入数据

data = {"key":"value"}
db.insert_one(data)#最好是一条一条插入、

更新数据

db.update_one({"key": "value"}, {"$set": {"key": "value"}},upsert=False,multi=False)
db.updateOne()#更改数据,只更新满足条件的一条数据
db.updateMany()#更改多条数据
#       upsert=False,表示在筛选不到数据时 ,不插入 
#       upsert=True,在筛选不到数据时,插入,但是只会插入筛选的字段
#       multi 是控制找到一个还是全部的:Flase是第一个 Ture是所有满足条件的
#前面字典是查询符合条件的(最好使用mongodb自生成的id),后面是需要替换的内容  

删除数据

db.stu.remove({"key":'value'})#按条件删除
db.remove({})#删除表中的所有数据,传入一个空对象,id值不会删除,如果再插入数据,id值会在原有的基础上增加
db.deleteOne()#删除一条数据
db.deleteMany()#删除多条数据

聚合


db.aggregate()
'''
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
$limit:用来限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
'''
#举例
#$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
db.aggregate([
    {$match:{score:{$gt:70, $lte:90}}},
    {$group:{_id:null,count:{ $sum:1}}}
 ])
#判断date字段为空或不存在,并以某个一定有的参数(可以进行分类的参数)进行统计
db.aggregate([
	{$match:{$or:[{"date":""},{"date":{$exists:false}}]}},
	{$group:{_id:{'type':'$type'},'count':{$sum:1}}}
])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值