From 3357da764c23c10d41c308a8263f739d63085bad Mon Sep 17 00:00:00 2001 From: simon987 Date: Sun, 29 Dec 2019 09:21:22 -0500 Subject: [PATCH] bugfix --- hexlib/db.py | 18 +++++++++--------- setup.py | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/hexlib/db.py b/hexlib/db.py index 86c602f..3284375 100644 --- a/hexlib/db.py +++ b/hexlib/db.py @@ -44,22 +44,24 @@ class Table: conn.row_factory = sqlite3.Row sql = "INSERT INTO %s (id,%s) VALUES ('%s',%s)" % \ - (self._table, ",".join(value.keys()), key, ",".join(_sqlite_value(v) for v in value.values())) - + (self._table, ",".join(value.keys()), key, ",".join("?" for _ in value.values())) try: - conn.execute(sql) + conn.execute(sql, list(_sqlite_value(v) for v in value.values())) except sqlite3.OperationalError: conn.execute( "create table if not exists %s (id text primary key,%s)" % (self._table, ",".join("%s %s" % (k, _sqlite_type(v)) for k, v in value.items())) ) - conn.execute(sql) + conn.execute(sql, list(_sqlite_value(v) for v in value.values())) except sqlite3.IntegrityError: + sql = "UPDATE %s SET (%s) = (%s) WHERE id=?" \ + % (self._table, ",".join(value.keys()), ",".join("?" for _ in value.values())) + args = [key] + args.extend(_sqlite_value(v) for v in value.values()) conn.execute( - "UPDATE %s SET (%s) = (%s) WHERE id=?" % - (self._table, ",".join(value.keys()), ",".join(_sqlite_value(v) for v in value.values())), - (key,) + sql, + args ) @@ -74,8 +76,6 @@ def _sqlite_type(value): def _sqlite_value(value): - if isinstance(value, str): - return '"%s"' % value if isinstance(value, bytes): return _sqlite_value(value.decode("unicode_escape")) return str(value) diff --git a/setup.py b/setup.py index 6dd96d2..e1e5532 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup( name="hexlib", - version="1.3", + version="1.4", description="Misc utility methods", author="simon987", author_email="me@simon987.net",