代碼實現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()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章