在Redis中存储数据然后获取该数据

时间:2015-10-20 19:59:13

标签: python mysql database excel redis

我有一个包含四列的Excel文件。我想获取这些数据并将其存储在MySQL中。稍后我想从这里获取数据并存储在Redis中,然后对其进行验证。我已经完成了从Excel到Python的数据导入。

1 个答案:

答案 0 :(得分:2)

您必须将4列Excel数据重新整形为1列数据。 Matlab / GNU Octave的redis客户端正在这样做,例如:https://github.com/markuman/go-redis/wiki/Data-Structure#arrays 请注意,在此示例中,Matlab / Octave使用Column-Major-Order。 Python正在使用Row-Major-Order:https://en.wikipedia.org/wiki/Row-major_order

因此,您必须将redis中的4列X行数据保存为行主要顺序列表作为列表(RPUSH)。

例如

给出这个excel表

excel example

使用此python3代码

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    """
    Created on Tue Oct 20 23:02:53 2015

    @author: markus
    """

    import pandas as pd
    import redis

    # redis connection
    r = redis.StrictRedis(host='localhost', port=6379, db=0)

    # open the first worksheed
    df  = pd.read_excel('/home/markus/excel.xlsx',0) 

    # read in as a list
    # [[1, 'two', 'python'], ['excel', 'redis', 'action']]
    a   = list(df.T.itertuples()) 
    print("this is a, your excel list")
    print(a)
    for list in a:
        for value in list:
            r.rpush('myexceldata', str(value))

    # read all back to python
    b = r.lrange('myexceldata', '0', '-1')

    print("A1 becomes 0, B1 becomes 3 ...")
    print(b[3].decode('UTF-8'))

将其序列化为redis中的列表

    127.0.0.1:6379> lrange myexceldata 0 -1
    1) "1"
    2) "two"
    3) "python"
    4) "excel"
    5) "redis"
    6) "action"

这只是以redis格式保存电子表格的一种方法。它始终属于您的数据结构以及您将要使用它做什么。