예제 #1
0
def question_gen_3(request):
    ques_gen = Ques_Gen_Book()
    ques, query = ques_gen.lvl_3_ques()
    feedback = ''
    if request.GET.get('answer'):
        connection = sqlite3.connect(
            "C:/Users/hhash/Desktop/FYP Implementation/books.db")
        crsr = connection.cursor()
        correct_answer = str(request.GET.get('correct_answer'))
        crsr.execute(correct_answer)
        ans = crsr.fetchall()
        user_ans = request.GET.get('answer')
        user_ans_check = sqlvalidator.parse(user_ans)
        if not user_ans_check.is_valid():
            feedback = 'Incorrect Syntax'
        # print(user_ans_check.errors)
        else:
            crsr.execute(user_ans)
            user_ans = crsr.fetchall()
            test_1 = set(ans) - set(user_ans)
            test_2 = set(user_ans) - set(ans)
            final = list(test_1) + list(test_2)
            if len(final) == 0:
                feedback = 'Correct Answer'
            else:
                feedback = 'Incorrect Answer'
    context = {'ques': ques, 'feedback': feedback, 'query': query}

    return render(request, 'question_gen.html', context=context)
예제 #2
0
    def extract_user_tables():
        # noinspection SpellCheckingInspection
        """
                Extract user created model tables defined in models.py.

                 @:rtype List
                """

        dump_file = utils.locate_sql_dump()

        # Open the sql dump and read it as list
        ddl_data = open(dump_file, 'r').readlines()

        assert len(ddl_data), 'Try running:\n./manage migrate'

        ddl_data_clean = utils.fix_names(
            apps.DatabuilderConfig.name,
            utils.without_django_tables(ddl_data),
        )

        # noinspection SpellCheckingInspection
        assert len(
            ddl_data_clean
        ), 'Try adding some models in models.py\n then run:\n./manage migrate'

        # Confirm each line for valid SQL query line
        result = any(
            [sqlvalidator.parse(cmd).is_valid() for cmd in ddl_data_clean])

        assert result, 'Some ddl command line is invalid, maybe the tool need upgrade, file an issue at project REPO'

        return ddl_data_clean
예제 #3
0
def assert_invalid_sql(sql: str, expected_errors: Optional[List[str]] = None):
    sql_query = sqlvalidator.parse(sql)
    assert sql_query.is_valid() is False, (
        "No errors found, but expected: {}".format(expected_errors)
        if expected_errors
        else "No errors found, but expected some"
    )
    if expected_errors:
        assert sql_query.errors == expected_errors
예제 #4
0
파일: safe_sql.py 프로젝트: disconsis/WasPy
def is_valid(query):
    """
    Simple sql validator.
    `sqlvalidator.is_valid` frequently throws errors
    on invalid input (like unbalanced quotes), so we wrap it in a bare `except`.
    """
    try:
        return sqlvalidator.parse(query).is_valid()
    except:
        return False
예제 #5
0
def clean_sql_Q():
# read the list of sql querries from the folder
    sql_files_list = listdir('sql')
    # list the files we read
    add_acc_message(f'\r\n We have read the following sql querries from the sql folder: {sql_files_list}')
    # load querries in dic:
    query_dic = {}
    for file in sql_files_list:
        if file.startswith("."):
            continue
        # read query
        f = open(f"sql/{file}", "r").read()
        if "gcp_cset_crunchbase" in f:
            add_acc_message(f'Found reference to dynamic data gcp_cset_crunchbase in {file} querry')
        if "gcp_cset_tr_refinitiv" in f:
            add_acc_message(f'Found reference to dynamic data tr_refinitiv in {file} querry')
        sql_query = sqlvalidator.parse(f)
        if not sql_query.is_valid():
            print(sql_query.errors)
            add_acc_message(f'Found SQL validation error in the querry {file}')
        # add querry to the dic
        query_dic.update({file[:-4]:f})
    return query_dic
예제 #6
0
def assert_invalid_sql(sql):
    sql_query = sqlvalidator.parse(sql)
    assert sql_query.is_valid() is False
예제 #7
0
def assert_valid_sql(sql):
    sql_query = sqlvalidator.parse(sql)
    assert sql_query.is_valid() is True, sql_query.errors
예제 #8
0
def ValidateSQLStatement(statement):
    s = sv.parse(statement)
    if not s.is_valid():
        return s.errors
    return 'Success'