diff options
Diffstat (limited to 'day9/task5_vue/backend/database/wrappers.py')
| -rw-r--r-- | day9/task5_vue/backend/database/wrappers.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/day9/task5_vue/backend/database/wrappers.py b/day9/task5_vue/backend/database/wrappers.py index d380b2e..d7dc6d4 100644 --- a/day9/task5_vue/backend/database/wrappers.py +++ b/day9/task5_vue/backend/database/wrappers.py @@ -90,17 +90,25 @@ class MySQLWrapper(Wrapper): self.connection.commit() def update(self, table_name, expressions, conditions): + scheme = self.schemes[table_name] expressions_formatted = [] + for field_name, value in expressions.items(): - if value != 'NULL' or not value.isnumeric(): - value = f'"{value}"' - expressions_formatted.append(f'`{field_name}`={value}') + if scheme.fields[field_name].nullable and value is None: + expressions_formatted.append(f'`{field_name}`=NULL') + elif scheme.fields[field_name].data_type == str: + expressions_formatted.append(f'`{field_name}`="{value}"') + else: + expressions_formatted.append(f'`{field_name}`={value}') conditions_formatted = [] for field_name, value in conditions.items(): - if value != 'NULL' or not value.isnumeric(): - value = f'"{value}"' - conditions_formatted.append(f'`{field_name}`={value}') + if scheme.fields[field_name].nullable and value is None: + conditions_formatted.append(f'`{field_name}`=NULL') + elif scheme.fields[field_name].data_type == str: + conditions_formatted.append(f'`{field_name}`="{value}"') + else: + conditions_formatted.append(f'`{field_name}`={value}') with self.connection.cursor() as cursor: cursor.execute("UPDATE `{}` SET {} WHERE {};".format( |