Python代码片段-Excel导入到MongoDB

有一次遇到一个需求,需要把Excel的数据导入到MongoDB中,表面上感觉就是导入数据很简单,但实际操作后,发现是比较麻烦的一个事情,一般图形化的工具对于MongoDB而言,导入选项都是json的,根本没有Excel的选项,而Excel中的数据包含敏感信息,又不能用在线工具转换为json,当时为了尽快处理完事情,当时尝试了Navicate工具,是支持的从Excel读取插入到MongoDB中。

这个事件结束后,感觉还是有必要要写个Python的导入脚本,完善自己的工具箱,如果再次遇到相同的问题可以有个PlanB。

代码虽然没有几行,但是胜在好用

python 复制代码
import pandas as pd
import pymongo


client = pymongo.MongoClient('mongodb://root:3a20ebec5e29c031be5ce78e6413a0@localhost:27017/admin?directConnection=true')
database = client["db1"]
collection = database["table1"]

df = pd.DataFrame(pd.read_excel("工作簿1.xlsx", sheet_name ="Sheet1"))

for row in df.itertuples():
    buf = {}
    for i,v in enumerate (list(df.columns)):
        buf [v] = row[i+1]
    print(buf)
    collection.insert_one(buf)

构建测试用Excel

MongoDB数据展示

另附Linux启动mongodb的docker-compose脚本,windows或macos请自行更改

bash 复制代码
#!/bin/bash

# 在当前目录下创建mongodb的docker-compose及相关目录

mkdir mongo-shell
mkdir db
openssl rand -base64 745 > keyfile.key
sudo chown 999 keyfile.key
sudo chmod 600 keyfile.key
sudo chown 999 mongo-shell

cat > docker-compose.yam <<EOF
version: "3.2"
services:
  mongo-standalone:
    image: mongo:4.4
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
    ports:
      - "27017:27017"
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - ./db:/data/db
      - ./keyfile.key:/data/keyfile.key
    command: mongod --keyFile=/data/keyfile.key --auth --port=27017
EOF

docker-compose up -d 
相关推荐
刘马想放假5 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
2601_967987375 小时前
python判断变量名不要调用任何函数实现
python·函数·语法·判断·变量名
卷无止境6 小时前
SALib敏感性分析的python库学习笔记
后端·python
duansamve7 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
我不会起名字3227 小时前
seq 空洞排查:Mongo 的 51 只是预留上界,Redis CURR 才是已消耗边界
redis·后端·mongodb·go·即时通讯·im·故障排查
特立独行的猫A7 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python
特立独行的猫A8 小时前
cj-tauri vs Rust/Tauri 同款播放器实测:编译 21 秒 vs 11 分钟,磁盘 12 MB vs 1.2 GB
java·后端·python
duansamve8 小时前
详解Flask中Session和Cookie
python·flask
威哥爱编程9 小时前
模拟面试智能体开发实战 04:面试聊到哪算哪?用状态机把整场面试编排起来
python·agent·harmonyos
威哥爱编程9 小时前
模拟面试智能体开发实战 03:AI 面试官太客气?人设 Prompt 让它像个真考官
python·agent·harmonyos