SQL

mysql数据转存到mongodb

2019-04-15  本文已影响274人  FilesFan

概述

现在比较推荐的数据存储方式是sql+nosql,而这个搭配方式中mysql+mongodb是比较流行的,所以就出现一个问题,2种数据库之间的转存如何实现,为了解决这个问题,编写了简单的转存脚本来实现。

实现思路

这个思路也很简单,就是将mysql的数据提取出来,转换成字典类型,然后存储到mongodb中。
这里推荐是一个个数据提取,如果一次性把数据全部取出,如果数据很大的话,对于内存的要求比较高。

代码实现

首先要定义一个生成器函数,来实现将mysql中的数据库提取出来并转换成字典

def mysql_info(sql):
    '''
        获取mysql数据的生成器
    '''
    try:
        cursor.execute(sql)
    except Exception as e:
        print(e)
        exit()
    else:
        while True:
            yield dict(zip([x[0] for x in cursor.description],[x for x in cursor.fetchone()]))
    finally:
        cursor.close()
        mysql_conn.close()

这里说下dict(zip([x[0] for x in cursor.description],[x for x in cursor.fetchone()]))。通过dict和zip函数配合可以将数据合并成字典。
cursor.description返回的是数据的表头信息。

最后的逻辑实现也就很简单了。

infos = mysql_info(mysql_command) #获取生成器
while True:
    try:
        info = next(infos) #获取生成器信息
        print("insert [%s] to mongodb.."%info['name'])
        mycoll.insert(info) #写入到mongodb中
    except:
        print('Done.')
        break

完整代码

GitHub完整代码

上一篇 下一篇

猜你喜欢

热点阅读