Python实现MySQL到MongoDB数据库的数据同步

一、数据准备

MySQL 5.7

--创建数据库
CREATE DATABASE test01;

-- 建表语句
CREATE TABLE `saleorder` (
  `order_id` int(11) NOT NULL,
  `order_time` date DEFAULT NULL,
  `order_num` int(11) DEFAULT NULL,
  PRIMARY KEY (`order_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

-- 数据加载
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (1, '2020-04-20', 420);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (2, '2020-04-04', 800);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (3, '2020-03-28', 500);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (4, '2020-03-13', 100);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (5, '2020-02-27', 300);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (6, '2020-01-07', 450);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (7, '2019-04-07', 800);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (8, '2019-03-15', 1200);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (9, '2019-02-17', 200);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (10, '2019-02-07', 600);
INSERT INTO `saleorder`(`order_id`, `order_time`, `order_num`) VALUES (11, '2019-01-13', 300);

如图所示:
在这里插入图片描述

二、安装三方库

pip install pymysql
pip install pymongo

三、python代码实现

import pymysql
import pymongo

# 创建mysql的数据库连接
con = pymysql.connect(
  host='localhost', 
  port=3306, 
  user='root',
  password='123456', 
  db='test01')
# 获取游标
cur = con.cursor(cursor=pymysql.cursors.DictCursor)
# 查询mysql中表数据
try:
  cur.execute('select * from saleorder')
  # 创建mongodb数据库连接
  client = pymongo.MongoClient(host='localhost', port=27017)
  # 获取数据库
  # 两种方式 或db=client.test01,相当于数据库中的use test01;
  db = client['test01']
  for row in cur.fetchall():
    # 时间字段转换
    #mongodb没有datetime类型,因此必须先转为字符串才能导入mongodb
    #若没有时间字段可以省略此步
    row['order_time'] = str(row['order_time']) 
    db.saleorder.insert_one(row)
except Exception as e:
  print(e)
finally:
  con.close()
  client.close()

四、MongoDB中查看数据

use test01;
db.test01.find()

在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值