from sqlparse.sql import Comment, Function, Identifier, Parenthesis, \
- Statement, Token
+ Statement, Token, Values
from sqlparse import tokens as T
from .process_tokens import escape_strings, is_comment_or_space
def remove_directive_tokens(statement):
- """Remove /\*! directives \*/ from the first-level"""
+ """Remove /\*! directives \*/ from the first-level""" # noqa: W605: \*
new_tokens = []
for token in statement.tokens:
if _is_directive_token(token):
expected = 'VALUES'
continue
elif expected == 'VALUES':
+ if isinstance(token, Values):
+ for subtoken in token.tokens:
+ if isinstance(subtoken, Parenthesis):
+ values_tokens.append(subtoken)
+ insert_tokens.append(Token(T.Keyword, 'VALUES'))
+ insert_tokens.append(Token(T.Whitespace, ' '))
+ expected = 'VALUES_OR_SEMICOLON'
+ continue
if (token.ttype is T.Keyword) and (token.normalized == 'VALUES'):
insert_tokens.append(token)
expected = 'VALUES_OR_SEMICOLON'
yield statement
-def process_statement(statement, quoting_style='sqlite'):
+def process_statement(statement, dbname='sqlite'):
requote_names(statement)
unescape_strings(statement)
remove_directive_tokens(statement)
- escape_strings(statement, quoting_style)
+ escape_strings(statement, dbname)
try:
- is_insert = get_DML_type(statement) == 'INSERT'
+ dml_type = get_DML_type(statement)
except ValueError:
- is_insert = False
- if is_insert:
+ dml_type = 'UNKNOWN'
+ if dml_type == 'INSERT':
for statement in split_ext_insert(statement):
yield statement
else: