From 869a2092a611d69697df4317d721697a3993e771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Wed, 17 Apr 2024 16:35:11 +0200 Subject: [PATCH] Generate random time columns --- pythonProject/schema.sql | 4 ++-- pythonProject/sqlgenerator/SQLGenerator.py | 13 ++++++++++++- pythonProject/sqlparse/SQLColumn.py | 1 + pythonProject/sqlparse/SQLParser.py | 2 ++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/pythonProject/schema.sql b/pythonProject/schema.sql index 515b556..e3e077a 100644 --- a/pythonProject/schema.sql +++ b/pythonProject/schema.sql @@ -2,8 +2,8 @@ CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `test_value` int(11) NOT NULL, `test_string` varchar(255) DEFAULT NULL, - `starting_date` date DEFAULT NULL, - `ending_date` date DEFAULT NULL, + `local_date` date DEFAULT NULL, + `local_time` time DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci diff --git a/pythonProject/sqlgenerator/SQLGenerator.py b/pythonProject/sqlgenerator/SQLGenerator.py index 822cf83..ddf863e 100644 --- a/pythonProject/sqlgenerator/SQLGenerator.py +++ b/pythonProject/sqlgenerator/SQLGenerator.py @@ -55,10 +55,21 @@ def generate_random_column(sql_column: SQLColumn, generated_values: List[ColumnV endingDate = datetime.datetime.strptime(value.value, "%Y-%m-%d").date() return generate_random_date(min_date, endingDate, sql_column) return generate_random_date(min_date, max_date, sql_column) + elif sql_column.columnType == SQLColumnType.TIME: + print("Time") + return generate_random_time(sql_column) def generate_random_date(start_date, end_date, sql_column): delta = end_date - start_date random_days = random.randrange(delta.days + 1) random_date = start_date + datetime.timedelta(days=random_days) - return ColumnValue(str(random_date), ValueType.STRING, sql_column) \ No newline at end of file + return ColumnValue(str(random_date), ValueType.STRING, sql_column) + + +def generate_random_time(sql_column, start_time=datetime.time(0,0,0), end_time=datetime.time(23, 59, 59)): + hours = random.randint(start_time.hour, end_time.hour) + minutes = random.randint(start_time.minute, end_time.minute) + seconds = random.randint(start_time.second, end_time.second) + random_time = datetime.time(hours, minutes, seconds) + return ColumnValue(str(random_time), ValueType.STRING, sql_column) diff --git a/pythonProject/sqlparse/SQLColumn.py b/pythonProject/sqlparse/SQLColumn.py index a9f2311..f94b700 100644 --- a/pythonProject/sqlparse/SQLColumn.py +++ b/pythonProject/sqlparse/SQLColumn.py @@ -6,6 +6,7 @@ class SQLColumnType(Enum): INT = 'int(11)' VARCHAR = 'varchar(255)' DATE = 'date' + TIME = 'time' class SQLColumn: diff --git a/pythonProject/sqlparse/SQLParser.py b/pythonProject/sqlparse/SQLParser.py index 4fc96a8..d4078b9 100644 --- a/pythonProject/sqlparse/SQLParser.py +++ b/pythonProject/sqlparse/SQLParser.py @@ -72,6 +72,8 @@ def get_column_type(column_definition: str): return SQLColumn.SQLColumnType.VARCHAR elif column_definition_characteristic == 'date': return SQLColumn.SQLColumnType.DATE + elif column_definition_characteristic == 'time': + return SQLColumn.SQLColumnType.TIME def get_column_name(column_definition: str):