mongodb 持久化 mysql_最详细的python爬虫指南(四):持久化操作(mongoDB、mysql)...

一、python操作mongodb

先来看下mongodb的基础语法,因为本人用到的不多,所以只是简单整理下mongodb基本语法

01.python写入mongodb

import pymongo

from pymongo import MongoClient

#连接本地数据库

connection = MongoClient('localhost')

#连接本地数据库demo,没有就创建

db = connection.demo

#创建集合employees

emp = db.employees

#根据情况,清空所有

#emp.delete_many({})

emp.remove(None)

#创建一条数据

zhangsan = {

'name':'张三',

'age': 30,

'sex':'男',

'contact':{

'email':'abc.qq.com',

'emai2':'def.163.net'

}

}

#执行插入命令

emp.insert_one(zhangsan)

#插入多条数据

lisi = {

'name':'李四',

'habit':{'habit':'eat',

'habit2':'sleep'}

}

wangwu = {

'name':'王五',

'age': 20,

'sex':'男'

}

zhangsan1 = {

'name':'张三1',

'age': 30,

'sex':'男',

'contact':{

'email':'abcd.qq.com',

'emai2':'def.163.net'

}

}

zhaoliu = {

'name':'赵六',

'age': 20,

'sex':'男'

}

emp.insert_many([zhangsan1,lisi,wangwu,zhaoliu])

02.python查询mongodb

import pymongo

from pymongo import MongoClient

#连接mongodb

conn = MongoClient('localhost')

#连接库

db = conn.demo

#连接集合

emp = db.employees

#查询内容

#1.无条件查询

# cursor = emp.find()

# for each in cursor:

# print(each)

#有条件查询

cursor = emp.find({'name':'张三'})

#print(list(cursor)[0])

# for each in cursor:

# print(each)

#若需要表示条数,用enumerate

for i,v in enumerate(cursor):

print(i+1,v)

#3.多条件查询

# cursor = emp.find(

# {'name':{

# '$in':['张三','李四']

# }}

# )

# for each in cursor:

# print(each)

#and 查询 且

# cursor = emp.find({

# 'name':{'$in':['张三','李四']},

# 'age':30

# })

# or 查询 或

# cursor = emp.find({

# '$or':[

# {'name':{'$in':['张三','李四']}},

# {'age':{'$lt':25}}

# ]

# })

# # 子条件查询

cursor = emp.find({

'contact.emai1':'abcd.qq.com'

})

for each in cursor:

print(each)

03.python更新mongodb

import pymongo

from pymongo import MongoClient

#连接mongodb

conn = MongoClient('localhost')

#连接库

db = conn.demo

#连接集合

emp = db.employees

#$set,更新操作

# emp.update_one(

# {'name':'王五'},

# {'$set':

# {'name':'王舞',

# 'sex':'女汉子'

# }}

# )

#

# #更新多条

# #无条件

# emp.update_many(

# {},

# {'$inc':{

# {'age':1}

# }}

# )

#

# #有条件

# emp.update_many(

# {'name':{'$in':['张三','李四']}},

# {'$set':{'age':25}},

# upsert=True

# )

#生成时间

# emp.update_many(

# {'name':{'$in':['张三','王五']}},

# {'$currentDate':{

# 'create_time':True, # True相当于 {'$type':'date'}

# 'mod_time':{'$type':'timestamp'}

# }}

# )

# emp.update_one(

# {'name':'钱八'},#若钱八不存在,配合update=True可以新增

# {'$currentDate':{

# 'create_time':True,

# 'mod_time':{'$type':'timestamp'}

# }},

# upsert = True,array_filters=None

# )

# 更新字段内的字段

result = emp.update_one(

{'name':'李四'},

{'$set':{

'habit':{

'habit1':'学习',

'habit2':'运动'

}

}}

)

print(result.raw_result)

04.python删除mongodb

import pymongo

from pymongo import MongoClient

#连接mongodb

conn = MongoClient('localhost')

#连接库

db = conn.demo

#连接集合

emp = db.employees

#删除name=‘张三1’的数据

emp.delete_one({'name':'张三1'})

#删除所有'age':{'$lt':40}的数据

result= emp.delete_many({'age':{'$lt':40}})

print(result.raw_result)

05.查询同时更新

import pymongo

from pymongo import MongoClient

#连接mongodb

conn = MongoClient('localhost')

#连接库

db = conn.demo

#连接集合

emp = db.employees

result = emp.find_one_and_update(

{},

{

'$set':{'locked':1},

'$inc':{'age':10}

},

projection={'age':True,'name':True}, #显示的key

sort=[('age',pymongo.DESCENDING)], #排序

return_document=pymongo.ReturnDocument.BEFORE #更改前还是更改后

)

print(result)

06.加载外部数据到mongodb

import pymongo

import json

from pymongo import MongoClient

#1.连接本地数据库

conn = MongoClient('localhost')

#2.连接本地数据库demo,没有就创建

db = conn.newdb

#3.创建新集合

col = db.zips

#4.打开json文件

file = open('zips.json')

#迭代添加

for each in file:

eachline = json.loads(each)

col.insert_one(eachline)

#关闭文件

file.close()

二、python操作mysqlmysql基本操作

01.连接mysql并读取数据

#导入模块

import pymysql

import json

#第一步:连接到mysql数据库

conn = pymysql.connect(host='localhost',user='root',password='123456',db='mycommodity',charset="utf8")

#第二 步:创建游标对象

cursor = conn.cursor() #cursor当前的程序到数据之间连接管道

# #第三步:组装sql语句

sql = 'select * from commodity'

# sql = "select c_id,c_name,c_inprice from commodity where c_inprice>(select avg(c_inprice) from commodity where c_type=(select ct_id from commoditytype where ct_name='玩具'))"

#第四部:执行sql语句

cursor.execute(sql)

#第五步:处理结果集

#获取一条数据

# one = cursor.fetchone()

# print(one)

#获取多条数据

# many = cursor.fetchmany(3)

# print(many)

#获取所有数据

all = cursor.fetchall()

for each in all:

print(json.dumps(each, ensure_ascii=False))

# print(type(each),each)

fields = cursor.description

# print(fields)

head = []

for field in fields:

head.append(field[0])

print(head)

#第六步:关闭所有的连接

#关闭游标

cursor.close()

#关闭数据库

conn.close()

02.连接mysql并添加数据

#导入模块

import pymysql

#第一步:连接到mysql数据库

conn = pymysql.connect(host='localhost',user='root',password='123456',db='mycommodity',charset="utf8")

#第二 步:创建游标对象

cursor = conn.cursor() #cursor当前的程序到数据之间连接管道

# #第三步:组装sql语句

sql = "INSERT INTO `commodity` VALUES (null, '电脑桌', '北京', '6', '100', '200', '200')"

#第四步:执行sql语句

cursor.execute(sql)

# !!!!!!!数据提交 commit() ,不提交数据库没有信息

conn.commit()

#第五步:处理结果集

#第六步:关闭所有的连接

#关闭游标

cursor.close()

#关闭数据库

conn.close()

03.自定义函数操作数据库

import pymysql

# 定义连接到mysql数据库的函数,返回连接对象

def getCon(db_name):

conn = pymysql.connect(host='localhost', user='root', password='123456', db=db_name, charset="utf8")

return conn

# 定义添加数据函数

def insertData(db_name,table_name,data):

conn = getCon(db_name)

# 第二 步:创建游标对象

cursor = conn.cursor() # cursor当前的程序到数据之间连接管道

#第三步:组装sql语句

sql = 'insert into '+ table_name +' values'+ data

cursor.execute(sql)

# 提交sql语句执行操作

conn.commit()

print("成功添加了{}条数据".format(cursor.rowcount))

# 关闭连接

cursor.close()

conn.close()

data1 = (0, '书桌', '南京', '6', '50', '100', '100')

insertData('mycommodity','commodity',str(data1))

04.自定义函数修改数据

import pymysql

# 定义连接到mysql数据库的函数,返回连接对象

def getCon(db_name):

conn = pymysql.connect(host='localhost', user='root', password='123456', db=db_name, charset="utf8")

return conn

# 修改数据

def updateData(db_name,table_name,conditions):

conn = getCon(db_name)

# 第二 步:创建游标对象

cursor = conn.cursor() # cursor当前的程序到数据之间连接管道

#第三步:组装sql语句

sql = 'update '+ table_name +conditions

print(sql)

cursor.execute(sql)

# 提交sql语句执行操作

conn.commit()

print("成功更新了{}条数据".format(cursor.rowcount))

# 关闭连接

cursor.close()

conn.close()

# 定义 update 的条件

condition = " set c_name = '大桌字' where c_id=70"

updateData('mycommodity','commodity',condition)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 中使用 MongoDB 数据库进行数据持久化可以使用 PyMongo 库。以下是使用 PyMongo 进行 MongoDB 数据库持久化的基本步骤: 1. 安装 PyMongo 库:可以使用 pip 命令进行安装。 ``` pip install pymongo ``` 2. 连接 MongoDB 数据库:使用 MongoClient 类进行连接。 ```python from pymongo import MongoClient client = MongoClient() # 默认连接本机 MongoDB 服务 ``` 3. 选择数据库:使用 database 属性选择数据库。 ```python db = client.mydatabase # 选择 mydatabase 数据库 ``` 4. 选择集合:使用集合名称获取集合。 ```python collection = db.mycollection # 选择 mycollection 集合 ``` 5. 插入数据:使用 insert_one 或 insert_many 方法插入数据。 ```python # 插入单条数据 data = {"name": "Tom", "age": 20} result = collection.insert_one(data) # 插入多条数据 data_list = [{"name": "Tom", "age": 20}, {"name": "Jerry", "age": 25}] result = collection.insert_many(data_list) ``` 6. 查询数据:使用 find 方法查询数据。 ```python # 查询所有数据 result = collection.find() # 查询符合条件的数据 result = collection.find({"name": "Tom"}) ``` 7. 更新数据:使用 update_one 或 update_many 方法更新数据。 ```python # 更新单条数据 collection.update_one({"name": "Tom"}, {"$set": {"age": 22}}) # 更新多条数据 collection.update_many({"name": "Tom"}, {"$set": {"age": 22}}) ``` 8. 删除数据:使用 delete_one 或 delete_many 方法删除数据。 ```python # 删除单条数据 collection.delete_one({"name": "Tom"}) # 删除多条数据 collection.delete_many({"name": "Tom"}) ``` 以上就是使用 PyMongo 进行 MongoDB 数据库持久化的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值