Fix string encoding on insert; adopt query parameters for update
This commit is contained in:
@@ -28,7 +28,7 @@ def _create_entry(self) -> None:
|
||||
cur.execute(f"INSERT INTO {table_name}("
|
||||
f"{', '.join(item[0] for item in kv_pairs)})"
|
||||
f" VALUES ({', '.join('?' for item in kv_pairs)})",
|
||||
[_convert_sql_format(item[1]) for item in kv_pairs])
|
||||
[item[1] for item in kv_pairs])
|
||||
self.__setattr__("obj_id", cur.lastrowid)
|
||||
con.commit()
|
||||
except IntegrityError:
|
||||
@@ -47,9 +47,9 @@ def _update_entry(self) -> None:
|
||||
kv_pairs = [item for item in asdict(self).items()]
|
||||
kv_pairs.sort(key=lambda item: item[0])
|
||||
query = f"UPDATE {table_name} " + \
|
||||
f"SET {', '.join(item[0] + ' = ' + _convert_sql_format(item[1]) for item in kv_pairs)} " + \
|
||||
f"SET {', '.join(item[0] + ' = ?' for item in kv_pairs)} " + \
|
||||
f"WHERE obj_id = {getattr(self, 'obj_id')};"
|
||||
cur.execute(query)
|
||||
cur.execute(query, [item[1] for item in kv_pairs])
|
||||
con.commit()
|
||||
|
||||
|
||||
|
||||
@@ -64,9 +64,6 @@ def getValFromDB(obj_id = 1):
|
||||
fields.sort()
|
||||
repr = dict(zip(fields, cur.fetchall()[0][1:]))
|
||||
field_types = {key: value.type for key, value in TestClass.__dataclass_fields__.items()}
|
||||
for key in fields:
|
||||
if field_types[key] == bytes:
|
||||
repr[key] = bytes(repr[key], encoding='utf-8')
|
||||
test_object = TestClass(**repr)
|
||||
return test_object
|
||||
|
||||
|
||||
Reference in New Issue
Block a user