指定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名称则导入完毕。