1. 程式人生 > >[Python程式設計]PyMongo實現對JSON的匯入和匯出

[Python程式設計]PyMongo實現對JSON的匯入和匯出

JSON匯入

1. 開啟Collection

import json
import pymongo

client = pymongo.MongoClient('localhost')
db = client['mydb']
collection = db['images']

2.開啟json並寫入到Collection

str = open("e:/images.json", encoding="utf-8").read()
data = []
data.extend(json.loads(str))
collection.insert_many(data)
client.close() #寫完關閉連線

JSON匯出

1.開啟Collection

import json
import pymongo
import re

client = pymongo.MongoClient('localhost')
db = client['mydb']
collection = db['images']

2.查詢讀取Colleciton

output = []
for i in collection.find():
    output.append(i)

3.處理id問題
one=output[0]
在這裡插入圖片描述
因為collection.find()得到的欄位_id是自動生成的ObjectId
ObjectId

:主鍵,是一個12位元組的 BSON型別字串。按照位元組順序,依次代表:
4位元組:UNIX時間戳
3位元組:表示執行MongoDB的機器
2位元組:表示生成此_id的程序
3位元組:由一個隨機數開始的計數器生成的值
在輸出JSON時,只需輸出12位元組,不需要輸出整個ObjectId

one.get('_id').__repr__()
#輸出
"ObjectId('5bfb49544d37b935a4a82eca')"
#使用正則表示式取出12位元組的id
re.findall("'(.*)'",one.get('_id').__repr__())[0]
'5bfb49544d37b935a4a82eca'

4.根據(3)方法修改所有id

for i in range(len(data)):
    output[i]['_id'] = re.findall("'(.*)'", output[i].get('_id').__repr__())[0]

也可以在讀取時修改

output = []
for i in collection.find():
    i['_id']=re.findall("'(.*)'",i.get('_id').__repr__())[0]
    output.append(i)

5.寫入到json檔案

with open('d:/images.json', 'w', encoding="UTF-8") as jf:
    jf.write(json.dumps(output, indent=2))

json.dumps(output,indent)將每一項dict轉換為str,避免了直接寫入時因為未序列化而報錯,同時指定縮排字元個數indent2

p.s.
順帶一提,在adminMongo中,點選Collection旁邊的Export即可匯出json
在這裡插入圖片描述
可以勾選是否匯出_id欄位
在這裡插入圖片描述

相關推薦

[Python程式設計]PyMongo實現JSON匯入匯出

JSON匯入 1. 開啟Collection import json import pymongo client = pymongo.MongoClient('localhost') db = cli

PHPExcel整合資料匯入匯出

<?php /** * Created by PhpStorm. * User: admin * Date: 2017/8/15 * Time: 9:07 */ class User extends CI_Controller { public function __co

Java實現Excel的匯入匯出

一、下載jxl.jar包匯入到工程中 二、新建Book.java package com.cc.reflection; public class Book { private int id; private String name; private Strin

基於MVC4+EasyUI的Web開發框架經驗總結(10)--在Web介面上實現資料的匯入匯出

資料的匯入匯出,在很多系統裡面都比較常見,這個匯入匯出的操作,在Winform裡面比較容易實現,我曾經在之前的一篇文章《Winform開發框架之通用資料匯入匯出操作》介紹了在Winform裡面的通用匯入匯出模組的設計和開發過程,但在Web上我們應該如何實現呢?本文主要介紹利用MVC4+EasyUI的特點,並結

SpringBoot通過WorkBook快速實現Excel的匯入匯出(包括資料校驗)

之前轉載過一篇對Excel基本操作相關的文章,這篇文章的瀏覽量迅速飆升,以至於在我部落格的熱門文章中排到了第三的位置,不過那篇轉載的文章實用性差並且講解不是很清晰,所以打算趁著今天休息,寫一篇關於SpringBoot通過WorkBook快速實現對Excel的匯入、匯出、資料校驗的文章,也是便於日後查

Python實現支援JSON儲存解析的物件

我們知道利用JSON模組可方便的將Python基本型別(dict、list等)資料永久的儲存成檔案,同時也可以通過自定義轉換函式和繼承JSON encode&decode的方法實現自定義類的儲

python裝飾器實現異常代碼出現進行監控

args lin sha lines 監控腳本 一秒 readline utf 發送 異常,不應該存在,但是我們有時候會遇到這樣的情況,比如我們監控服務器的時候,每一秒去采集一次信息,那麽有一秒沒有采集到我們想要的信息,但是下一秒采集到了, 而

[Python Study Notes]實現鼠標控制

移動 bin log ont 實例化 html 實現 坐標 tool ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ &g

[Python Study Notes]實現鍵盤控制與監控

實現 博客 pac rip art 字符串 line 一個 sys ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ >

python(五):面向象--類實例

括號 們的 apple 系統 method 不能 balance 類的創建 內置 一、類的基本概念   類是用來創建數據結構和新類型對象的主要機制。一個類定義了一系列與其實例對象密切關聯的屬性.典型的屬性包括變量(也被稱為 類變量)和函數(又被稱為方法)。   1、cl

Python程式設計:從入門到實踐—變數簡單資料型別

變數的命名和使用 #!/usr/bin/env python# -*- encoding:utf-8 -*- message ="Hello Python world!"print(message)   在Python中使用變數時,需要遵守一些規則。 變數名只能包含字母、數字和下劃線。變數名可以

Python程式設計:itemgetter獲取字典元素groupby分組

itemgetter獲取字典元素 groupby分組 程式碼示例 from itertools import groupby from operator import itemgetter d1 = {"name": "Tom", "age": 23, "country": "

Python程式設計:importlib.import_module動態匯入模組

環境:python 3.6 檔案結構 ├── clazz │ ├── __init__.py │ ├── a.py │ └── b.py └── main.py a.py 的程式碼 def show(): print("show A") b.p

解決Python程式設計中PyCharm無法識別匯入同目錄下模組問題

在Python編寫時,需要用到匯入已建立好的模組,但一般會出現下圖紅方塊問題:並沒有要匯入的模組的問題,即模組無法被識別。  出現上述情況,是因為PyCharm設定的問題,通過網上查詢,可以按照以下方法解決: 1、file—setting—Build,Execution,

python程式設計入門之四:列表元組

第四章 列表和元組 4.1 建立一個列表 我們之前學過c語言的同學都知道一個數據型別叫做陣列,但是陣列有一個硬性的要求,就是陣列內的資料型別必須一致,但由於python沒有資料型別,所以python便加入了一個強大的列表,並且幾乎可以向裡注入任何型別的元素。 列

Python Hadoop Mapreduce 實現Hadoop Streaming分組二次排序

需求:公司給到一份全國各門店銷售資料,要求:1.按門店市場分類,將同一市場的門店放到一起;2.將各家門店按銷售額從大到小,再按利潤從大到小排列 一 需求一:按市場對門店進行分組 分組(partition) Hadoop streaming框架預設情況下會以’/t

OpenCVZbar兩個Python模塊實現二維碼條形碼識別

組成 cimage 老師 font key ans 部分 平時 ubuntu 在我們的日常生活中,處處可見條形碼和二維碼。 在以前,我們去逛書店時,或者你現在隨手拿起你身邊的一本書,你肯定能看到書本的封頁後面印有一排黑色線條組成的標簽,也就是條形碼;你去你們學校的自助機上借

利用Python網路爬蟲實現網易雲音樂歌詞爬取

今天小編給大家分享網易雲音樂歌詞爬取方法。 本文的總體思路如下: 找到正確的URL,獲取原始碼; 利用bs4解析原始碼,獲取歌曲名和歌曲ID; 呼叫網易雲歌曲API,獲取歌詞; 將歌詞寫入檔案,並存入本地。 本文的目的是獲取網易雲音樂的歌詞,並將歌詞存入到本地檔案。整

pymongo實現mongodb進行增刪改查操作

問題:使用python指令碼對伺服器上的mongodb某表的記錄進行增刪改查操作 解決方法: 可以使用pymongo模組實現對mongodb的增刪改查 limit: pymongo現在不能處理ss

python一行程式碼實現百度翻譯有道翻譯結果獲取-----py學習爬蟲歷程(一)

更新(18-6-2):利用requests庫只需一行程式碼就可以獲取結果,程式碼在最後前言:本文參考於https://blog.csdn.net/c406495762/article/details/59095864一.本節主要用到的知識1-1:urllib.request.