博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用peewee将数据库从mysql导入mongodb
阅读量:4551 次
发布时间:2019-06-08

本文共 1199 字,大约阅读时间需要 3 分钟。

因为业务需要,要讲数据从mysqldb迁移到mongodb中去。结合peewee和pymongo写了一个小脚本,使用的也都是sql的原生语句读取数据。 碰到几个小坑,但是还比较容易解决。如果碰上数据量非常大,可以考虑使用peewee中的方法,具体脚本记录如下:

  1 from peewee import *

 2 
from datetime 
import datetime
 3 
from  pymongo 
import *
 4 
from decimal 
import Decimal
 5 
 6 
 7 db = MySQLDatabase(
'
test
',
 8         host = 
'
0.0.0.0
',
 9         user = 
'
root
',
10         passwd = 
'
itcast
',
11         charset = 
'
utf8
'
12         )   
13 
14 db.connect()
15 cur =  db.execute_sql(
'
show tables
')
16 tables =  map(
lambda x: x[0], cur.fetchall())
17 
18 
19 mdb = MongoClient(
'
localhost
', 27017)[
'test
'
20 count = 0 
21 
for table 
in tables:
22     
print 
'
*
'*30
23     
print table
24     cur = db.execute_sql(
'
desc 
'+ table)
25     fields  = map(
lambda x: x[0], cur.fetchall())
26     cur = db.execute_sql(
'
select * from 
'+table)
27     values =  cur.fetchall()
28     data = []
29 
30     
for value 
in values:
31         
#
 mongo不支持Decimal格式,先转为float
32 
        value = map(
lambda x: float(x) 
if isinstance(x, Decimal) 
else x, value)
33         data.append(dict(zip(fields, value)))
34 
35     
#
 空数据插入mongo会报错,所以先做个判断
36 
    
if len(data)>0:
37         mtb = mdb[table]
38         mtb.insert_many(data)
39 
40     count += 1
41 
print 
'
*
'*30
42 
print 
'
totally %d tables transferred
' % count

 

转载于:https://www.cnblogs.com/noway-neway/p/5291753.html

你可能感兴趣的文章
决胜经典算法之冒泡排序
查看>>
决胜经典算法之选择排序
查看>>
11、求二进制中1的个数
查看>>
【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理结果适配篇(7/8)...
查看>>
CodeForces 731A Night at the Museum
查看>>
MySQL 删除数据库
查看>>
JavaScript 字符串(String) 对象
查看>>
How to use VisualSVN Server and TortoiseSVN to host your codes and control your codes' version
查看>>
微信小程序picker组件 - 省市二级联动
查看>>
Dynamics CRM 给视图配置安全角色
查看>>
Eclipse修改已存在的SVN地址
查看>>
C++ ACM基础
查看>>
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
正则表达式语法
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
使用最快的方法计算2的16次方是多少?
查看>>
urllib 中的异常处理
查看>>
【SQL Server高可用性】高可用性概述
查看>>