Merge pull request #8 from intoverflow/tcarstens/query-params

Fix string encoding on create; adopt query parameters for update
This commit is contained in:
Ambertide
2021-12-29 11:32:33 +03:00
committed by GitHub
2 changed files with 3 additions and 6 deletions

View File

@@ -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()

View File

@@ -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