Generate insert commands for isolated number-only tables
This commit is contained in:
		
							parent
							
								
									db0cea9de7
								
							
						
					
					
						commit
						5ba3fad6cc
					
				| @ -1,5 +1,6 @@ | ||||
| # This is a sample Python script. | ||||
| from sqlparse import SQLParser | ||||
| from sqlgenerator import SQLGenerator | ||||
| 
 | ||||
| 
 | ||||
| # Press Umschalt+F10 to execute it or replace it with your code. | ||||
| @ -7,6 +8,16 @@ from sqlparse import SQLParser | ||||
| 
 | ||||
| def main(): | ||||
|     sql_tables = SQLParser.parse_sql_file("schema.sql") | ||||
|     inserts = [] | ||||
|     for table in sql_tables: | ||||
|         for i in range(0, 100): | ||||
|             inserts.append(SQLGenerator.generate_random_insert(table)) | ||||
| 
 | ||||
|     with open("inserts.sql", "w") as file: | ||||
|         for insert in inserts: | ||||
|             file.write(insert + "\n") | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -3,10 +3,3 @@ CREATE TABLE `test` ( | ||||
|                         `test_value` int(11) NOT NULL, | ||||
|                         PRIMARY KEY (`id`) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci | ||||
| 
 | ||||
| CREATE TABLE `test2` ( | ||||
|                         `id` bigint(20) NOT NULL, | ||||
|                         `test_value` int(11) NOT NULL, | ||||
|                         PRIMARY KEY (`id`) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										27
									
								
								pythonProject/sqlgenerator/SQLGenerator.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								pythonProject/sqlgenerator/SQLGenerator.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| import random | ||||
| from sqlparse.SQLColumn import SQLColumn, SQLColumnType | ||||
| from sqlparse.SQLTable import SQLTable | ||||
| 
 | ||||
| min_bigint = 0 | ||||
| max_bigint = 9223372036854775807 | ||||
| 
 | ||||
| min_int = -2147483648 | ||||
| max_int = 2147483647 | ||||
| 
 | ||||
| def generate_random_insert(sql_table: SQLTable): | ||||
|     columnValues =  [] | ||||
|     for column in sql_table.columns: | ||||
|         columnValues.append(generate_random_column(column)) | ||||
| 
 | ||||
|     sql_insert_command = "INSERT INTO " + sql_table.table_name + " VALUES (${i});" | ||||
|     for columnValue in columnValues: | ||||
|         sql_insert_command = sql_insert_command.replace("${i}", str(columnValue) + ", ${i}") | ||||
|     sql_insert_command = sql_insert_command.replace(", ${i}", "") | ||||
|     return sql_insert_command | ||||
| 
 | ||||
| 
 | ||||
| def generate_random_column(sql_column: SQLColumn): | ||||
|     if sql_column.columnType == SQLColumnType.BIGINT: | ||||
|         return random.randint(min_bigint, max_bigint) | ||||
|     elif sql_column.columnType == SQLColumnType.INT: | ||||
|         return random.randint(min_int, max_int) | ||||
| @ -22,7 +22,7 @@ def split_table_definition(sql_string: str): | ||||
| def parse_sql_file(sql_path: str): | ||||
|     sql_string = read_sql_file(sql_path) | ||||
|     sql_tables = split_table_definition(sql_string) | ||||
|     processed_tables = [SQLTable] | ||||
|     processed_tables = [] | ||||
|     for sql_table in sql_tables: | ||||
|         table = parse_table_sql(sql_table) | ||||
|         processed_tables.append(table) | ||||
| @ -46,7 +46,8 @@ def process_table_content(table_content: str, table_name: str): | ||||
|         else: | ||||
|             column = parse_column_definition(column_definition) | ||||
|             columns.append(column) | ||||
|     return SQLTable(table_name, columns, primary_key) | ||||
|     table = SQLTable(table_name, columns, primary_key) | ||||
|     return table | ||||
| 
 | ||||
| 
 | ||||
| def parse_column_definition(column_definition: str): | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user