import pymongo
import json
from bson import ObjectId

mongoclient = pymongo.MongoClient(host="127.0.0.1",port=27017)
MongoDB = mongoclient["locals"]  # 连接一个数据库

# res = MongoDB.user.find({})
# for i in res:
#     print(i)        # ObjectID
#     i["_id"] = str(i.get("_id"))      # 转换为str类型
#     print(i.get("_id"),type(i.get("_id")))
#     s = json.dumps(i)      # 如果不转换为str类型,则无法反序列化

#
# res = MongoDB.user.find_one({},{"_id":0})      # {"_id":0}为筛选条件,将键_id对应的键值对筛掉,也可以筛多个,如{"_id":0,"name":0}
# print(res)
# res = list(MongoDB.user.find({"id":1}))
# print(res)

#增加
# res = MongoDB.user.insert_one({"id":1,"age":55,"name":"taibai"})
# print(res,type(res),res.inserted_id)

# res = MongoDB.user.insert_many([{"id":1,"age":55,"name":"taibai"},{"id":1,"age":55,"name":"taibai"}])
# print(res,type(res),res.inserted_ids)

# 修改:
# res = MongoDB.user.update_one({"age":55},{"$set":{"name":"四金"}})
# print(res,dir(res))

# MongoDB.user.update_many({"age":55},{"$set":{"name":"四金"}})

#删除:
# res = MongoDB.user.delete_one({"id":1})
# res = MongoDB.user.delete_many({"id":1})


# sort limit skip

# res = list(MongoDB.user.find({}).limit(5).skip(2))
# print(res)

# res = list(MongoDB.user.find({}).sort("age",pymongo.DESCENDING).limit(5).skip(2)) # pymongo.DESCENDING为倒序,也可以写成-1;pymongo.ASCENDING为正序,也可以写成1
# print(res)

# s = ObjectId("5c3ea77e23652a0218a5ab9a")
#
# res = MongoDB.user.find_one({"_id":ObjectId("5c3ea77e23652a0218a5ab9a")})
# print(res)
pymongo 简单使用示例
pip install pymysql

数据库连接:
数据库连接之前。首先先确认以下工作完成,这里我们以一个pymysql_test数据库.以下将介绍连接mysql的示例代码:

    import pymysql

    db = pymysql.connect(
        host="127.0.0.1",
        user='root',
        password='root',
        database='pymysql_test',
        port=3306
    )
    cursor = db.cursor()
    cursor.execute("select 1")
    data = cursor.fetchone()
    print(data)
    db.close()





插入数据:
import pymysql

db = pymysql.connect(
    host="127.0.0.1",
    user='root',
    password='root',
    database='pymysql_test',
    port=3306
)
cursor = db.cursor()
sql = """
insert into user(
    id,username,gender,age,password
  ) 
  values(null,'abc',1,18,'111111');
"""
cursor.execute(sql)
db.commit()
db.close()
如果在数据还不能保证的情况下,可以使用以下方式来插入数据:

sql = """
insert into user(
    id,username,gender,age,password
  ) 
  values(null,%s,%s,%s,%s);
"""

cursor.execute(sql,('spider',1,20,'222222'))







查找数据:
使用pymysql查询数据。可以使用fetch*方法。

fetchone():这个方法每次之获取一条数据。
fetchall():这个方法接收全部的返回结果。
fetchmany(size):可以获取指定条数的数据。
示例代码如下:
cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
while True:
    result = cursor.fetchone()
    if not result:
        break
    print(result)
db.close()
或者是直接使用fetchall,一次性可以把所有满足条件的数据都取出来:

cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
results = cursor.fetchall()
for result in results:
    print(result)
db.close()
或者是使用fetchmany,指定获取多少条数据:

cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
results = cursor.fetchmany(1)
for result in results:
    print(result)
db.close()







删除数据:
cursor = db.cursor()

sql = """
delete from user where id=1
"""

cursor.execute(sql)
db.commit()
db.close()






更新数据:
conn = pymysql.connect(host='localhost',user='root',password='root',database='pymysql_demo',port=3306)
cursor = conn.cursor()

sql = """
update user set username='aaa' where id=1
"""
cursor.execute(sql)
conn.commit()

conn.close()
pymysql

 

一 安装

pip install pymongo

二 python连接mongodb数据库的前提

  • 确保pymongo安装完毕
  • mongodb数据库的服务器端(mongod)必须处于启动状态

三 连接mongodb

   连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,
第二个参数为端口port,端口如果不传默认是27017。
  • 方式一
    client=pymongo.MongoClient(host='127.0.0.1',port=27017)
  • 方式二
    lient = pymongo.MongoClient('mongodb://localhost:27017/')

四 指定数据库

  • 特点:找不到数据库,自动创建数据库
  • 代码:
    db=client.test #数据库名为test 
    或者 db = client['test']

五 指定集合

  • 特点:找不到集合,自动创建集合
  • 代码:
    collection=db.student
  或者collection = db['students']

六 插入数据

单条数据的插入

student = {
    'id': '20170101',
    'name': 'Jordan',
    'age': 20,
    'gender': 'male'
}
  • 方式一:result=collection.insert(student)
  • 方式二:result=collection.insert_one(student)   #推荐使用

多条数据的插入

student2 = {
    '_id': '2',
    'name': 'Jordan',
    'age': 30,
    'gender': 'male'
}

student3 = {
    '_id': '3',
    'name': 'Mike',
    'age': 20,
    'gender': 'male'
}
  • 方式一:result=collection.insert([student2,student3])
  • 方式二:result=collection.insert_many([student2,student3])#推荐使用

注意:官方推荐使用insert_one()和insert_many()方法将插入单条和多条记录分开。

七 查询

#根据系统生成的id查询 
from bson.objectid import ObjectId result = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')}) print(result)
  • 1 单条查询

results = collection.find_one({'age': 20})
  • 2 查询结果返回多条

result_list=collection.find({'age':20})
print(result_list)
for result in result_list:
    print(result['_id'])

2.2模糊查询

'''

符号含义示例
$lt小于{'age': {'$lt': 20}}
$gt大于{'age': {'$gt': 20}}
$lte小于等于{'age': {'$lte': 20}}
$gte大于等于{'age': {'$gte': 20}}
$ne不等于{'age': {'$ne': 20}}
$in在范围内{'age': {'$in': [20, 23]}}
$nin不在范围内{'age': {'$nin': [20, 23]}}

'''

# 如果要查询年龄大于20的数据,则写法如下:
  
results = collection.find({'age': {'$gt': 20}})

2.3 正则查询

"""
符号含义示例示例含义
$regex匹配正则{'name': {'$regex': '^M.*'}}name以M开头
$exists属性是否存在{'name': {'$exists': True}}name属性存在
$type类型判断{'age': {'$type': 'int'}}age的类型为int
$mod数字模操作{'age': {'$mod': [5, 0]}}年龄模5余0
$text文本查询{'$text': {'$search': 'Mike'}}text类型的属性中包含Mike字符串
$where高级条件查询{'$where': 'obj.fans_count == obj.follows_count'}自身粉丝数等于关注数
"""
# 另外还可以进行正则匹配查询,例如查询名字以M开头的学生数据,示例如下:
  
results = collection.find({'name': {'$regex': '^M.*'}})

3 其他

  • count = collection.find().count() #统计查询返回的数量
  • results = collection.find().sort([('age',pymongo.ASCENDING),('name', pymongo.ASCENDING)]) #多条件排序
  • results = collection.find().sort('name', pymongo.ASCENDING).skip(2) #分页提取数据

八 更新文档

condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 25
result = collection.update(condition, student)
#在这里我们将name为Kevin的数据的年龄进行更新,首先指定查询条件,然后将数据查询出来,修改年龄,
#之后调用update方法将原条件和修改后的数据传入,即可完成数据的更新。
condition = {'age': {'$gt': 20}}
result = collection.update_one(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)

# 在这里我们指定查询条件为年龄大于20,然后更新条件为{'$inc': {'age': 1}},执行之后会讲第一条符合条件的
数据年龄加1。
#更新多条数据
condition = {'age': {'$gt': 20}} result = collection.update_many(condition, {'$inc': {'age': 1}}) print(result) print(result.matched_count, result.modified_count)

九 删除文档

# 另外依然存在两个新的推荐方法,delete_one()和delete_many()方法,示例如下:
  
result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)

参考博客:https://www.cnblogs.com/pyedu/p/10313148.html

posted on 2020-01-06 13:51  始终不够啊  阅读(206)  评论(0编辑  收藏  举报