如何將redis中的數據導入到本地MongoDB和MySQL數據庫


將redis中的數據導入到本地MongoDB數據庫

創建一個process_items_mongodb.py文件(文件名自定義):

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import redis
import pymongo
import json

def process_item():
    # 創建redis數據庫連接
    rediscli = redis.Redis(host = "127.0.0.1", port = 6379, db = "0")

    # 創建MongoDB數據庫連接
    mongocli = pymongo.MongoClient(host = "127.0.0.1", port = 27017)

    # 創建mongodb數據庫名稱
    dbname = mongocli["youyuan"]
    # 創建mongodb數據庫youyuan的表名稱
    sheetname = dbname["beijing_18_25_mm"]
    offset = 0

    while True:
        # redis 數據表名 和 數據
        source, data = rediscli.blpop("yy:items")
        offset += 1
        # 將json對象轉換為Python對象
        data = json.loads(data)
        # 將數據插入到sheetname表里
        sheetname.insert(data)
        print offset

if __name__ == "__main__":
    process_item()

將redis中的數據導入到本地MySQL數據庫

創建一個process_items_mysql.py文件(文件名自定義):

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import redis
import MySQLdb
import json

def process_item():
    # 創建redis數據庫連接
    rediscli = redis.Redis(host = "127.0.0.1", port = 6379, db = 0)

    # 創建mysql數據庫連接
    mysqlcli = MySQLdb.connect(host = "127.0.0.1", port = 3306, \
        user = "power", passwd = "60055969", db = "youyuan")

    offset = 0

    while True:
        # 將數據從redis里pop出來  source :yy, data:items.
        source, data = rediscli.blpop("yy:items")
        item = json.loads(data)
        try:
            # 創建mysql 操作游標對象,可以執行mysql語句
            cursor = mysqlcli.cursor()

            cursor.execute("insert into beijing_18_25_mm (username, age, header_url, images_url, content, place_from, education, hobby, source_url, source, time, spidername) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", [item['username'], item['age'], item['header_url'], item['images_url'], item['content'], item['place_from'], item['education'], item['hobby'], item['source_url'], item['sourec'], item['time'], item['spidername']])
            # 提交事務
            mysqlcli.commit()
            # 關閉游標
            cursor.close()
            offset += 1
            print offset
        except:
            pass

if __name__ == "__main__":
    process_item()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM