![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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()
一 安装
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)