zoukankan      html  css  js  c++  java
  • cherry 与sqlite

    Index.html

    <!DOCTYPE html>
    <html>
      <head>
        <link href="/static/css/style.css" rel="stylesheet">
        <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
        <script type="text/javascript">
          $(document).ready(function() {
    
    
            $("#generate-string").click(function(e) {
              $.post("/generator", {"length": $("input[name='length']").val()})
               .done(function(string) {
                $("#the-string").show();
                $("#the-string input").val(string);
              });
              e.preventDefault();
            });
    
    
            $("#replace-string").click(function(e) {
              $.ajax({
                type: "PUT",
                url: "/generator",
                data: {"another_string": $("#the-string input").val()}
              })
              .done(function() {
                alert("Replaced!");
              });
              e.preventDefault();
            });
    
    
            $("#delete-string").click(function(e) {
              $.ajax({
                type: "DELETE",
                url: "/generator"
              })
              .done(function() {
                $("#the-string").hide();
              });
              e.preventDefault();
            });
    
    
          });
        </script>
      </head>
      <body>
        <input type="text" value="8" name="length"/>
        <button id="generate-string">Give it now!</button>
        <div id="the-string">
          <input type="text" />
          <button id="replace-string">Replace</button>
          <button id="delete-string">Delete it</button>
        </div>
      </body>
    </html>

    Code

    import os, os.path
    import random
    import sqlite3
    import string
    import time
    import cherrypy
    
    
    DB_STRING = "my.db"
    
    class StringGenerator(object):
        @cherrypy.expose
        def index(self):
            return open('index.html')
    
    
    
    
    @cherrypy.expose
    class StringGeneratorWebService(object):
    
    
        @cherrypy.tools.accept(media='text/plain')
        def GET(self):
            with sqlite3.connect(DB_STRING) as c:
                cherrypy.session['ts'] = time.time()
                r = c.execute("SELECT value FROM user_string WHERE session_id=?",
                              [cherrypy.session.id])
                return r.fetchone()
    
    
        def POST(self, length=8):
            some_string = ''.join(random.sample(string.hexdigits, int(length)))
            with sqlite3.connect(DB_STRING) as c:
                cherrypy.session['ts'] = time.time()
                c.execute("INSERT INTO user_string VALUES (?, ?)",
                          [cherrypy.session.id, some_string])
            return some_string
    
    
        def PUT(self, another_string):
            with sqlite3.connect(DB_STRING) as c:
                cherrypy.session['ts'] = time.time()
                c.execute("UPDATE user_string SET value=? WHERE session_id=?",
                          [another_string, cherrypy.session.id])
    
    
        def DELETE(self):
            cherrypy.session.pop('ts', None)
            with sqlite3.connect(DB_STRING) as c:
                c.execute("DELETE FROM user_string WHERE session_id=?",
                          [cherrypy.session.id])
    
    
    
    
    def setup_database():
        """
        Create the `user_string` table in the database
        on server startup
        """
        with sqlite3.connect(DB_STRING) as con:
            con.execute("CREATE TABLE user_string (session_id, value)")
    
    
    
    
    def cleanup_database():
        """
        Destroy the `user_string` table from the database
        on server shutdown.
        """
        with sqlite3.connect(DB_STRING) as con:
            con.execute("DROP TABLE user_string")
    
    
    
    
    if __name__ == '__main__':
        conf = {
            '/': {
                'tools.sessions.on': True,
                'tools.staticdir.root': os.path.abspath(os.getcwd())
            },
            '/generator': {
                'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
                'tools.response_headers.on': True,
                'tools.response_headers.headers': [('Content-Type', 'text/plain')],
            },
            '/static': {
                'tools.staticdir.on': True,
                'tools.staticdir.dir': './public'
            }
        }
    
    
        cherrypy.engine.subscribe('start', setup_database)
        cherrypy.engine.subscribe('stop', cleanup_database)
    
    
        webapp = StringGenerator()
        webapp.generator = StringGeneratorWebService()
        cherrypy.quickstart(webapp, '/', conf)

  • 相关阅读:
    Android ANR异常解决方案
    数据结构之斐波那契查找
    数据结构之插值查找
    数据结构之折半查找
    Android Task 任务
    java中“==”号的运用
    php中向前台js中传送一个二维数组
    array_unique和array_flip 实现去重间的区别
    js new Date() 获取时间
    手机端html5触屏事件(touch事件)
  • 原文地址:https://www.cnblogs.com/sea-stream/p/14179451.html
Copyright © 2011-2022 走看看