如何使用tornado python将用户输入数据保存到redis

时间:2012-03-16 22:01:47

标签: python redis tornado

我正在使用龙卷风,python编写一个小型Web应用程序,下面是我的代码。我在python中有一个带有2个文本字段的html表单,现在我想将输入表单作为文本字段并存储在redis中。
我的问题 -

  1. 如何从我的python脚本连接redis?
  2. 如何将传入的用户输入存储到redis?
  3. 示例代码将不胜感激。

    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web
    
    from tornado.options import define, options
    
    define("port", default=8888, help="run on the given port", type=int)
    
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write('<html><body><form action="/" method="post">'
               '<p>Please enter the Key Value pair for redis.</p>'
                       '<input type="text" **name="key"** value="type key here">'
               '<input type="text" **name="value"** value="type value here">'
                       '<input type="submit" value="Submit Key Value">'
                       '</form></body></html>')
    
    
    def main():
        tornado.options.parse_command_line()
        application = tornado.web.Application([
            (r"/", MainHandler),
        ])
        http_server = tornado.httpserver.HTTPServer(application)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()
    
    
    if __name__ == "__main__":
        main()
    

1 个答案:

答案 0 :(得分:3)

对于第一个问题,使用python的redis模块。

首先,从redis安装sudo easy_install redis或从source code获取安装脚本

py-redis的github page上有文档,但如果你想从简单的东西开始,只需写下这两行代码:

import redis
# if your redis was implemented properly and defaultly (eg. on 6379 port),
# `db` you get can work now.
db = redis.StrictRedis()

对于第二个问题,请在MainHandler上编写HTTP POST处理方法:

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        ...

    def post(self):
        # use handler's get_argument method to get incoming data,
        # if eithor of them is not get, a HTTP 400 will return
        key = self.get_argument('key')
        value = self.get_argument('value')
        # just like `SET` command in redis client
        db.set(key, value)
        # return something you want
        self.write('Set %s - %s pair OK' % (key, value))

PS。您可以先将db设置为处理程序类的属性,以便可以从self.db轻松获取。