赞
踩
概述
现在比较推荐的数据存储方式是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
完整代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。