如何从关键redis打印所有valus

时间:2016-02-20 01:00:24

标签: python flask redis

我正在学习尝试学习python flask + redis,然后我正在做一个基本的应用程序,我可以用答案提出问题,之后有人可以给我一个问题的答案,并且工作,但我希望打印提出所有问题,但是我没有得到这些问题,尝试进行for循环但是没有用,然后我尝试使用r.lrange,但它对我不起作用,也许有人可以解释它是怎样的&# #39;工作,看这是我的 的 Router.py

r = redis.StrictRedis(host='localhost',port=6379,db=0, charset="utf-8", decode_responses=True);

# Alternativas
   # r = redis.StrictRedis();
   # r = redis.StrictRedis('localhost',6379,0);

# Server/
@app.route('/')
def hello():
    crearLink = "<a href='" + url_for('crear') + "'>Hacer una pregunta</a>";
    return """<html>
                <head>
                    <title>Hola, Mundo!</title>
                </head>
                <body>
                    """ + crearLink  +"""
                </body>
            </html>""";


# Server/crear
@app.route('/crear', methods=['GET', 'POST'])
def crear():
    if request.method == 'GET':
        # enviar el formulario al usuario
        return render_template('CreateQuestion.html');
    elif request.method == 'POST':
        # leer la informacion del form y guardarla
        titulo = request.form['titulo'];
        pregunta = request.form['pregunta'];
        respuesta = request.form['respuesta'];

        # Guardar informacion
        # Key name

        r.set(titulo +':pregunta', pregunta);
        r.set(titulo +':respuesta', respuesta);

        return render_template('CreatedQuestion.html', pregunta = pregunta);
    else:
        return "<h2>Error</h2>";
def preguntas():
    preguntass = r.lrange('pregunta','0','4')
    print preguntass;

# server/pregunta/<title>
@app.route('/pregunta/<titulo>', methods=['GET', 'POST'])
def pregunta(titulo):
    if request.method == 'GET':
        # Leer la pregunta de la base de datos
        pregunta = r.get(titulo+':pregunta')
        return render_template('AnswerQuestion.html', pregunta = pregunta);
    elif request.method == 'POST':
        submittedAnswer = request.form['submittedAnswer'];
        if submittedAnswer == '':
            return "No ingresastes ninguna clase de informacion para validar.";
        respuesta = r.get(titulo+':respuesta')
        if submittedAnswer == respuesta:
            return render_template('Correct.html');
        else:
            return render_template('Incorrect.html', submittedAnswer = submittedAnswer, respuesta = respuesta);
    else:
        return '<h2>Error</h2>';

1 个答案:

答案 0 :(得分:-1)

您可以使用r.keys()获取当前redis数据库中所有密钥的列表。 r.keys()还会采用可选模式来匹配键。

因此,您可以使用r.keys("*:pregunta")来匹配所有问题。

此外,线端分号是非常不必要的。