tornado 操作数据库

Posted on Posted in tornado

基本操作举例

> main.py

  1. #!/usr/bin/evn python  
  2. # coding:utf-8  
  3. from tornado import httpserver, ioloop, web  
  4. from tornado.options import define, options  
  5. import torndb  
  6. import tornado.options  
  7. from handlers import HANDLERS, TEMPLATE_PATH  
  8.   
  9. define("port",default=9000, help="run on the given server", type=int)  
  10. define("mysql_host", default="192.168.126.128:3306", help="db host")  
  11. define("mysql_database", default="pydb", help="db name")  
  12. define("mysql_user", default="lhh", help="dbuser")  
  13. define("mysql_password", default="liuhonghe", help="dbpasswd")  
  14.   
  15. class Application(web.Application):  
  16.     def __init__(self):  
  17.         handlers = HANDLERS  
  18.         settings = dict(  
  19.             template_path = TEMPLATE_PATH,  
  20.             xsrf_cookies  = False#防止跨站攻击  
  21.             # print base64.b64encode(uuid.uuid4().bytes+uuid.uuid4().bytes)  
  22.             cookie_secret = "z0PsF2IhRIa/auHqcaaCrEDwJU7y70vbhXLcehnvu/s=",  
  23.         )  
  24.         web.Application.__init__(self, handlers, **settings)  
  25.         self.db = torndb.Connection(  
  26.             host = options.mysql_host, database = options.mysql_database,  
  27.             user = options.mysql_user, password = options.mysql_password  
  28.         )  
  29. if __name__ == "__main__":  
  30.     tornado.options.parse_command_line()  
  31.     http_server = httpserver.HTTPServer(Application())  
  32.     http_server.listen(options.port)  
  33.     ioloop.IOLoop.instance().start()  

> handlers

  1. #!/usr/bin/env python  
  2. # coding=utf-8  
  3. from views import *  
  4. import os.path  
  5.   
  6. TEMPLATE_PATH = os.path.join(os.path.dirname(__file__),"templates")  
  7.   
  8. HANDLERS = [(r'/',IndexHandler),(r'/poem',PoemPageHandler)]  
  9.   
  10. HANDLERS += [(r'/show',ShowHandler)]  

> views.py

  1. #!/usr/bin/env python  
  2. # coding=utf-8  
  3. import tornado.web  
  4. import tornado.gen  
  5.   
  6. class BaseHandler(tornado.web.RequestHandler):  
  7.     @property  
  8.     def db(self):  
  9.         return self.application.db  
  10.   
  11.     def get_one_poem(self, ids):  
  12.         return self.db.get("select * from authors where id=%d",int(ids))  
  13.   
  14.     def get_all(self):  
  15.         return self.db.query("select * from authors")  
  16.   
  17. class IndexHandler(BaseHandler):  
  18.     def get(self):  
  19.         self.render('index.html')  
  20.   
  21. class PoemPageHandler(BaseHandler):  
  22.     def post(self):  
  23.         noun1 = self.get_argument("noun1")  
  24.         noun2 = self.get_argument("noun2")  
  25.         noun3 = self.get_argument("noun3")  
  26.         verb = self.get_argument('verb')  
  27.   
  28.         self.db.execute('insert into authors (email,name) values(%s,%s)', noun1,noun2)  
  29.         ret = self.db.get('select * from authors where email=%s',noun1)  
  30.         self.render('poem.html',roads=noun1,wood=noun2,mode=verb,difference=noun3,id=ret['id'])  
  31. class ShowHandler(BaseHandler):  
  32.     def get(self):  
  33.         ids = self.get_argument('id',1)  
  34.         ret = self.get_one_poem(ids)  
  35.         if not ret:  
  36.             raise tornado.web.HTTPError(404)  
  37.         self.render('show.html',title=ret['email'],update=ret['name'])  

> templates/index.html

  1. <!DOCTYPE html>  
  2. <html>  
  3.  <head><title>index</title></head>  
  4.  <body>  
  5.   <form method="post" action="/content">  
  6.    <p>N1<br /><input type="text" name="n1"></p>  
  7.    <p>N2<br /><input type="text" name="n2"></p>  
  8.    <p>N3<br /><input type="text" name="n3"></p>  
  9.    <p>N4<br /><input type="text" name="n4"></p>  
  10.    <input type="submit">  
  11.   </form>  
  12.  </body>  
  13. </html>  

> templates/poem.html

  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head><title>Peom PRO</title></head>  
  4.     <body>  
  5.         <h1><a href="/show?id={{id}}">Your peom</a></h1>  
  6.     <p> Two {{roads}} driverged in a {{wood}}, and I-<br />  
  7.     I took the one less travelled by, <br />  
  8.         And that has {{mode}} all the {{difference}}.  
  9.     </p>  
  10.     </body>  
  11. </html>  

> templates/show.html

  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>show</title>  
  6. </head>  
  7. <body>  
  8. <h1>Your poem</h1>  
  9. <p>{{title}}</p>  
  10. <p>{{update}}</p>  
  11. </body>  
  12. </html>  
» 转载请注明来源:若我若鱼 » tornado 操作数据库

Leave a Reply

Your email address will not be published. Required fields are marked *

seventeen − sixteen =