Exemple #1
0
def index():
    content = ""
    results = []
    error = None

    if request.method == "POST":
        content = request.form["content"]
        if not content:
            flash("Please provide SQL query")
        else:
            try:
                inter = Interpreter(tree=Parser(lex=Lexer(content)).parse(),
                                    working_dir=os.getenv("WORKING_DIR"))
                results = inter.do()
            except LexerException as err:
                error = "Lexer Error: %s" % str(err)
            except ParserException as err:
                error = "Parser Error: %s" % str(err)
            except (TableNotExists, TableColumnNotExists,
                    StorageException) as err:
                error = "Storage Error: %s" % str(err)
            except Exception as err:
                error = "Error: %s" % str(err)
    elif request.method == "GET":
        content = "select uid, name, num_of_jobs, avg_salary from languages;"

    return render_template('index.html',
                           content=content,
                           results=results,
                           error=error)
Exemple #2
0
    def setUp(self) -> None:
        if not os.path.exists(self.TEST_DIR):
            os.mkdir(self.TEST_DIR)

        queries = [
            "create table foobar (primary key uid, a, b);",
            "insert into foobar set uid=1, a='a', b=100;",
            "insert into foobar set uid=2, a='b', b=100;",
            "insert into foobar set uid=3, a='c', b=200;",
            "insert into foobar set uid=4, a='d', b=200;",
            "insert into foobar set uid=5, a='e', b=300;",
            "insert into foobar set uid=6, a='f', b=300;",
        ]

        sql = "".join(queries)
        inter = Interpreter(tree=Parser(lex=Lexer(sql)).parse(),
                            working_dir=self.TEST_DIR)
        inter.do()
Exemple #3
0
 def test_insert_ok(self, queries, expected):
     sql = "".join(queries)
     inter = Interpreter(tree=Parser(lex=Lexer(sql)).parse(),
                         working_dir=self.TEST_DIR)
     results = inter.do()
     self.assertEqual(expected, results)
Exemple #4
0
 def test_select_expressions_ok(self, sql, expected):
     inter = Interpreter(tree=Parser(lex=Lexer(sql)).parse(),
                         working_dir=self.TEST_DIR)
     results = inter.do()
     self.assertEqual(expected, results)