pandas可以导入mysql_使用pandas把mysql的数据导入MongoDB。

使用pandas把mysql的数据导入MongoDB。

首先说下我的需求,我需要把mysql的70万条数据导入到mongodb并去重,

同时在第二列加入一个url字段,字段的值和第三列的值一样,代码如下:

# -*- coding: utf-8 -*-

# @Time : 2018/9/29 17:20

# @Author : cxa

# @File : run.py

# @Software: PyCharm

import pandas as pd

from sqlalchemy import create_engine

from pymongo import MongoClient

import json

import time

class MongoBase:

def __init__(self, collection):

self.collection = collection

self.OpenDB()

def read_mysql(self):

engine = create_engine(

'mysql+pymysql://usernmae:passwd@ip:port/dbname?charset=utf8') # 用sqlalchemy创建引擎

start=time.time()

max_id=self.get_max_id()

df1 = pd.read_sql(f'select primary_key,phone,plat_code,crawl_time,jrjt_del_dt from test_info where primary_key>{max_id}', engine) # 从数据库中读取表存为DataFrame

end = time.time()

print("查询完毕条数",len(df1['phone']),"用时",end-start)

df1.drop_duplicates('phone', keep='first', inplace=True)

df1.insert(1, 'url', df1['phone'])

return df1

def OpenDB(self):

self.con = MongoClient(host=host)

self.db = self.con[self.collection]

self.collection = self.db['test']

def closeDB(self):

self.con.close()

def get_max_id(self):

max_id = self.collection.find().sort([('primary_key', -1)]).limit(1)[0]

if max_id:

return max_id.get("primary_key")

if __name__ == '__main__':

start=time.time()

mongo = MongoBase('spider_data')

df =mongo.read_mysql()

mongo.collection.insert(json.loads(df.T.to_json()).values())

mongo.closeDB()

end=time.time()

print("运行完成所用时",end-start)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值