123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # -*- coding: utf-8 -*-
- #
- # Copyright (C) 2009-2018 the sqlparse authors and contributors
- # <see AUTHORS file>
- #
- # This module is part of python-sqlparse and is released under
- # the BSD License: https://opensource.org/licenses/BSD-3-Clause
-
- """Parse SQL statements."""
-
- # Setup namespace
- from sqlparse import sql
- from sqlparse import cli
- from sqlparse import engine
- from sqlparse import tokens
- from sqlparse import filters
- from sqlparse import formatter
-
- from sqlparse.compat import text_type
-
- __version__ = '0.3.0'
- __all__ = ['engine', 'filters', 'formatter', 'sql', 'tokens', 'cli']
-
-
- def parse(sql, encoding=None):
- """Parse sql and return a list of statements.
-
- :param sql: A string containing one or more SQL statements.
- :param encoding: The encoding of the statement (optional).
- :returns: A tuple of :class:`~sqlparse.sql.Statement` instances.
- """
- return tuple(parsestream(sql, encoding))
-
-
- def parsestream(stream, encoding=None):
- """Parses sql statements from file-like object.
-
- :param stream: A file-like object.
- :param encoding: The encoding of the stream contents (optional).
- :returns: A generator of :class:`~sqlparse.sql.Statement` instances.
- """
- stack = engine.FilterStack()
- stack.enable_grouping()
- return stack.run(stream, encoding)
-
-
- def format(sql, encoding=None, **options):
- """Format *sql* according to *options*.
-
- Available options are documented in :ref:`formatting`.
-
- In addition to the formatting options this function accepts the
- keyword "encoding" which determines the encoding of the statement.
-
- :returns: The formatted SQL statement as string.
- """
- stack = engine.FilterStack()
- options = formatter.validate_options(options)
- stack = formatter.build_filter_stack(stack, options)
- stack.postprocess.append(filters.SerializerUnicode())
- return u''.join(stack.run(sql, encoding))
-
-
- def split(sql, encoding=None):
- """Split *sql* into single statements.
-
- :param sql: A string containing one or more SQL statements.
- :param encoding: The encoding of the statement (optional).
- :returns: A list of strings.
- """
- stack = engine.FilterStack()
- return [text_type(stmt).strip() for stmt in stack.run(sql, encoding)]
|