python3将Redis数据库数据导入到MySQL数据库中

指定redis数据库信息和mysql数据库,然后无限循环从redis读取数据,最后写入mysql里

#!/usr/bin/env python
# coding=utf-8

# 将获取到的产品信息从redis数据库存到mysql的:数据库'产品信息表'中
import json
import redis
import pymysql

def main():
    # 指定redis数据库信息
    rediscli = redis.StrictRedis(host='localhost',port=6379,db=0)
    # 指定mysql数据库
    mysqlcli = pymysql.connect(host="localhost",port=3306,user="root",passwd="123456",db="python3",charset="utf8")
    while True:
        # 从redis里提取数据,FIFO模式为 blpop,LIFO模式为 brpop,获取键值
        source,data = rediscli.blpop(["posproductredis:items"])
        # item = json.loads(data.decode("utf-8"))
        item = json.loads(data)
        try:
            # 使用cursor()方法获取操作游标
            cursor = mysqlcli.cursor()
            sql = "insert into 产品信息表(ID,商家名称,产品分类,产品名称,销售标题,销售情况,零售价,促销价,规格,起订量," \
                  "销售区域)VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) "
            cursor.execute(sql,[item['id_list'], item['qiye_list'], item['product_list'],
                item['product_name_list'], item['sales_title'], item['sale_list'], item['retail_price'],
                item['promotion_price'], item['product_size'], item['product_quantity'], item['sales_area']])
            mysqlcli.commit()
            cursor.close()
            print("insert %s"% item['id_list'])
        except pymysql.Error as e:
            mysqlcli.rollback()
            print("插入数据错误",e)
            # print("Mysql Error %d:%s"%(e.args[0],e.args[1]))

if __name__ == "__main__":
    main()

注意:字段名要一一对应,并且这个循环停不下来,需要手动终止,待Redis数据库中没有items名称则导入完毕。

猜你喜欢

转载自blog.csdn.net/z564359805/article/details/81220138