python实现mongodb数据导入到mysql

      在实际项目中需要把mongodb数据库的数据迁移到mysql数据库,由于该功能只使用一次,因此使用python实现,代码量比较小,特此奉上自己的代码,供大家参考,谢谢!如有问题,请在下方留言,我会及时的回复。

from pymongo import MongoClient
import pymysql
import time
#连接mysql数据库  后面加上 charset="utf8mb4" 这样方便传输汉字,解决字符集不匹配的问题
client1 = pymysql.connect("localhost","数据库账号","数据库密码","数据库名",charset="utf8mb4")
#定义mysql数据库的游标
cursor = client1.cursor()
#连接Momgo数据库
client = MongoClient('localhost',27017)
#连接相应的collection
db = client.organization.orgProductsScope
sql = "INSERT INTO orgProductsScope (orgId,isSharedByCity,districtName,cityId,provinceId,seriesId,isSharedByProvince,districtId,cityName,isSharedBydistrict,brandId,disabled,provinceName,isShared,ctime,mtime) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);"
#遍历mongo数据库,加入batch_size(30)方法解决解决 MongoDB 的 cursor id is not valid at server 问题
for i in db.find().batch_size(30):
    orgId = int(i["orgId"])
    relationOrgProductsScope = i["relationOrgProductsScope"]
    for j in relationOrgProductsScope:
        print(j)
        isSharedByCity = 0
        if 'isSharedByCity' in j:
            if j["isSharedByCity"] != "":
                isSharedByCity = int(j["isSharedByCity"])

        districtName = ""
        if 'districtName' in j:
            districtName = j["districtName"]

        cityId = ""
        if 'cityId' in j:
            cityId = j["cityId"]

        provinceId = ""
        if 'provinceId' in j:
            provinceId = j["provinceId"]

        seriesId = ""
        if 'seriesId' in j:
            seriesId = j["seriesId"]

        isSharedByProvince = "0"
        if 'isSharedByProvince' in j:
            isSharedByProvince = j["isSharedByProvince"]

        districtId = ""
        if 'districtId' in j:
            districtId = j["districtId"]

        cityName = ""
        if 'cityName' in j:
            cityName = j["cityName"]

        isSharedByCity = "0"
        if 'isSharedByCity' in j:
            isSharedBydistrict = j["isSharedByCity"]

        brandId = "0"
        if 'brandId' in j:
            brandId = j["brandId"]

        disabled = 0
        if 'disabled' in j:
            if j["disabled"] != "":
                disabled = int(j["disabled"])

        provinceName = ""
        if 'provinceName' in j:
            provinceName = j["provinceName"]

        isShared = 0
        if 'isShared' in j:
            if j["isShared"] != "":
                isShared = int(j["isShared"])
        # 向表orgProductsScope插入相应的数据
        par = (
        orgId, isSharedByCity, districtName, cityId, provinceId, seriesId, isSharedByProvince, districtId, cityName,
        isSharedBydistrict, brandId, disabled, provinceName, isShared,time.localtime(),time.localtime())
        try:
            cursor.execute(sql, par)
            client1.commit()
        except Exception as e:
            client1.rollback()
            print(e)
cursor.close()
client.close()

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值