1 # -*- coding: utf-8 -*-
3 from sqlparse import parse
5 from sqlconvert.print_tokens import tlist2str
6 from sqlconvert.process_mysql import remove_directive_tokens, \
7 is_directive_statement, requote_names, unescape_strings, \
9 from sqlconvert.process_tokens import escape_strings
13 parsed = parse("insert into test (1, 'тест')", 'utf-8')[0]
14 query = tlist2str(parsed).encode('utf-8')
16 u"INSERT INTO test (1, 'тест')".encode('utf-8')
20 parsed = parse(u"insert into test (1, 'тест')")[0]
21 query = tlist2str(parsed)
22 assert query, u"INSERT INTO test (1 == 'тест')"
26 parsed = parse("select /*! test */ * from /* test */ `T`")[0]
27 remove_directive_tokens(parsed)
28 query = tlist2str(parsed)
29 assert query == u'SELECT * FROM /* test */ `T`'
32 def test_directive_statement():
33 parsed = parse("/*! test */ test ;")[0]
34 assert not is_directive_statement(parsed)
35 parsed = parse("/*! test */ ;")[0]
36 assert is_directive_statement(parsed)
40 parsed = parse("select * from `T`")[0]
42 query = tlist2str(parsed)
43 assert query == u'SELECT * FROM "T"'
46 def test_unescape_string():
47 parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
48 unescape_strings(parsed)
49 query = tlist2str(parsed)
50 assert query == u"INSERT INTO test VALUES ('\"te'st\"\n')"
53 def test_escape_string_postgres():
54 parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
55 unescape_strings(parsed)
56 escape_strings(parsed, 'postgres')
57 query = tlist2str(parsed)
58 assert query == u"INSERT INTO test VALUES (E'\"te''st\"\\n')"
61 def test_escape_string_sqlite():
62 parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
63 unescape_strings(parsed)
64 escape_strings(parsed, 'sqlite')
65 query = tlist2str(parsed)
66 assert query == u"INSERT INTO test VALUES ('\"te''st\"\n')"
70 parsed = parse("select /*! test */ * from /* test */ `T`")[0]
71 process_statement(parsed)
72 query = tlist2str(parsed)
73 assert query == u'SELECT * FROM /* test */ "T"'