def test_multiple_statements(self): sql_file = sql_file_syntax.parseString(""" CREATE TABLE test_table1 ( test_column INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL ); ALTER TABLE test_table1 ADD col_no0 BIT(8) NOT NULL DEFAULT 0 FIRST, ADD col_no1 LONGTEXT NOT NULL, ADD col_no2 VARCHAR(200) NULL, ADD col_no3 BIT(8) AFTER col0; CREATE TABLE test_table2 ( test_column INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL ); ALTER TABLE test_table2 ADD col_no0 BIT(8) NOT NULL DEFAULT 0 FIRST, ADD col_no1 LONGTEXT NOT NULL, ADD col_no2 VARCHAR(200) NULL, ADD col_no3 BIT(8) AFTER col0; """) self.assertEqual(len(sql_file.statements), 2) self.assertEqual(sql_file.statements[0].table_name, 'test_table1') self.assertEqual(sql_file.statements[1].table_name, 'test_table2')
def parse(file_or_string): """Parse a file-like object or string. Args: file_or_string (file, str): File-like object or string. Returns: ParseResults: instance of pyparsing parse results. """ if hasattr(file_or_string, 'read') and hasattr(file_or_string.read, '__call__'): return sql_file_syntax.parseString(file_or_string.read()) elif isinstance(file_or_string, six.string_types): return sql_file_syntax.parseString(file_or_string) else: raise TypeError("Expected file-like or string object, but got '{type_name}' instead.".format( type_name=type(file_or_string).__name__, ))