sqlite_query_execution.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:PlasoScaffolder 作者: ClaudiaSaxer 项目源码 文件源码
def ExecuteQueryDetailed(
      self, query: str) -> sql_query_data.SQLQueryData:
    """Executes the SQL Query and gets detailed information.

    Args:
      query (str): The SQL Query to execute on the SQLite database.

    Returns:
      sql_query_data.SQLQueryData: The data to the Query
    """
    query_data = sql_query_data.SQLQueryData(
        data=None, has_error=True, columns=None)
    if not re.fullmatch('[A-Za-z,.;*=_0-9 ]*', query):
      query_data.error_message = ('Warning: Don\'t use any characters beside'
                                  ' a-z A-Z 0-9 . ; , * = _')
      return query_data

    if query.lower()[query.lower().find(' from '):].find(' as ') != -1:
      query_data.error_message = ('Warning: '
                                  'Don\'t use any alias for a table name')
      return query_data

    data_from_executed_query = self._ExecuteQuery(query, True)
    if not data_from_executed_query.has_error:
      duplicate_names = self._type_helper.GetDuplicateColumnNames(
          data_from_executed_query.columns)
      if duplicate_names:
        duplicate_names_as_string = ' '.join(duplicate_names)
        data_from_executed_query.has_error = True
        data_from_executed_query.error_message = (
            'Please use an alias (AS) for '
            'those column names: {0}'.format(duplicate_names_as_string))
      if not data_from_executed_query.has_error:

        data_from_executed_query.columns = (
            self._type_helper.AddMissingTypesFromSchema(
                data_from_executed_query.columns, query))

    return data_from_executed_query
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号