]> git.phdru.name Git - sqlconvert.git/commitdiff
Implement is_insert()
authorOleg Broytman <phd@phdru.name>
Sat, 11 Mar 2017 20:42:01 +0000 (23:42 +0300)
committerOleg Broytman <phd@phdru.name>
Sun, 12 Mar 2017 03:29:12 +0000 (06:29 +0300)
sqlconvert/process_mysql.py
tests/test_process_mysql.py

index 0320b7f30e794886624ebbb6d4a0df5993d2f671..9e342c2e04ec7c5ad4ba1796731932320762e5f3 100644 (file)
@@ -1,7 +1,7 @@
 
 from sqlparse.sql import Comment
 from sqlparse import tokens as T
-from .process_tokens import escape_strings
+from .process_tokens import escape_strings, is_comment_or_space
 
 
 def _is_directive_token(token):
@@ -70,6 +70,13 @@ def unescape_strings(token_list):
             token.normalized = token.value = value
 
 
+def is_insert(statement):
+    for token in statement.tokens:
+        if is_comment_or_space(token):
+            continue
+        return (token.ttype is T.DML) and (token.normalized == 'INSERT')
+
+
 def process_statement(statement, quoting_style='sqlite'):
     requote_names(statement)
     unescape_strings(statement)
index 500a35db746f146e3eed543cc6c10b633a6e4700..45e5020de20fdc91f8b80f1fad67cd1e57f02939 100644 (file)
@@ -5,7 +5,7 @@ from sqlparse import parse
 from sqlconvert.print_tokens import tlist2str
 from sqlconvert.process_mysql import remove_directive_tokens, \
         is_directive_statement, requote_names, unescape_strings, \
-        process_statement
+        is_insert, process_statement
 from sqlconvert.process_tokens import escape_strings
 
 
@@ -53,6 +53,15 @@ def test_escape_string_sqlite():
     assert query == u"INSERT INTO test VALUES ('\"te''st\"\n')"
 
 
+def test_is_insert():
+    parsed = parse("select /*! test */ * from /* test */ `T`")[0]
+    statement = next(process_statement(parsed))
+    assert not is_insert(statement)
+    parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
+    statement = next(process_statement(parsed))
+    assert is_insert(statement)
+
+
 def test_process():
     parsed = parse("select /*! test */ * from /* test */ `T`")[0]
     statement = next(process_statement(parsed))