python保存数据db_python存储数据到mongodb

mongodb本地插入数据的基本操作

#!/usr/bin/env python

#-*- coding:utf-8 -*-

"""在python脚本中,将文件导入到数据库中

"""

from pymongo import MongoClient

MONGO_URL = "mongodb://localhost:27017" #how to hnow

MONGO_DB = "test"

MONGO_TABLE = "day1"

client = MongoClient(MONGO_URL) # 生成mongodb对象

db = client[MONGO_DB]

## 定义插入数据的函数

def save_to_mongo(data):

if db[MONGO_TABLE].insert(data):

print("成功储存到MongoDB", data)

return True

return False

data = {'name':'mike', 'score':99}

save_to_mongo(data)

2.使用csv中的DictReader函数读取

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2018/10/21 11:31

# @Author : deli Guo

# @Site :

# @File : csv文件存入mongoDB.py

# @Software : PyCharm

# 导包

from pymongo import MongoClient

import csv

# 创建连接MongoDB数据库函数

def connection():

# 1:连接本地MongoDB数据库服务

conn=MongoClient("localhost")

# 2:连接本地数据库(guazidata)。没有时会自动创建

db=conn.guazidata

# 3:创建集合

set1=db.data

# 4:看情况是否选择清空(两种清空方式,第一种不行的情况下,选择第二种)

#第一种直接remove

set1.remove(None)

#第二种remove不好用的时候

# set1.delete_many({})

return set1

def insertToMongoDB(set1):

# 打开文件guazi.csv

with open('guazi.csv','r',encoding='utf-8')as csvfile:

# 调用csv中的DictReader函数直接获取数据为字典形式

reader=csv.DictReader(csvfile)

# 创建一个counts计数一下 看自己一共添加了了多少条数据

counts=0

for each in reader:

# 将数据中需要转换类型的数据转换类型。原本全是字符串(string)。

each['index']=int(each['index'])

each['价格']=float(each['价格'])

each['原价']=float(each['原价'])

each['上牌时间']=int(each['上牌时间'])

each['表显里程']=float(each['表显里程'])

each['排量']=float(each['排量'])

each['过户数量']=int(each['过户数量'])

set1.insert(each)

counts+=1

print('成功添加了'+str(counts)+'条数据 ')

# 创建主函数

def main():

set1=connection()

insertToMongoDB(set1)

# 判断是不是调用的main函数。这样以后调用的时候就可以防止不会多次调用 或者函数调用错误

if __name__=='__main__':

main()

3.超详细的利用python操作MongoDB数据库

class MyMongoDB: #创建一个类

def __init__(self, database, collection): #利用初始化的方法输入要操作的数据库(database),集合(collection)

import pymongo #导入pymongo模块

self.connet = pymongo.MongoClient() #连接到虚拟机上的mongo数据库

self.database = self.connet[database] #选择需要操作的数据库名称

self.collecttion = self.database[collection] #选择需要操作的集合名称(如果集合名不存在会自动创建)

def insert(self, data, onlyone=True): #输入需要添加的数据(data),onlyone用来控制增加数据是单条还是多条

if onlyone: #控制数据为单条

self.collecttion.insert_one(data) #向集合中增加单条数据

else: #否则为多条数据

self.collecttion.insert_many(data) #向集合中增加多条数据

def find(self, query=None, onlyone=True): #输入查询的条件(query,默认为None指查询全部数据),使用onlyone控制查询的数据是单条还是多条

if onlyone: #默认onlyone为True查询一条数据

result = self.collecttion.find_one(query) #将查询的结构用result变量来接收

return result #返回result

else: #onlyone为False查询多条数据

result = self.collecttion.find(query) #将查询的结构用result变量来接收

return list(result) #返回result,并转换成列表

def updata(self, data, new_data, onlyone=True): #指定需要修改的数据(data),修改后的数据(new_data),onlyone控制修改单条还是多条

if onlyone: #当onlyone为真

self.collecttion.update_one(data, {'$set': new_data}) #修改单条数据,使用'$set'表示指定修改数据否则会使数据库中所有数据被新数据覆盖

else: #当onlyone为假

self.collecttion.insert_many(data, {'$set': new_data}) #修改多条数据,使用'$set'表示指定修改数据否则会使数据库中所有数据被新数据覆盖

def delete(self, data, onlyone=True): #删除数据,data需要删除的数据,使用onlyone控制删除的条数

if onlyone:

self.collecttion.delete_one(data) #删除一条

else:

self.collecttion.delete_many(data) #删除多条

wl = MyMongoDB('stu', 'wl') #指定我们需要操作的数据库为stu数据库,需要操作的集合为wl集合

wl.insert([{'name': 'cx', 'profession': 'bigdata', 'age': 18},{'name': 'fhb', 'profession': 'bigdata', 'age': 21}], onlyone=False)

#向wl集合中插入两条数据,控制onlyone为False,告知insert函数我们需要插入多条数据

print(wl.find({'name': 'cx'})) #在inset中为我们已经增加了数据,此时查询名字为cx学生信息并打印

wl.updata({'profession': 'bigdata'}, {'profession': 'English'}) #将学生专业为大数据的改成英语专业

print(wl.find(onlyone=False)) #控制onlyone=False,打全部数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值