Allow surrogates in parameters

closes #507

https://dwheeler.com/essays/fixing-unix-linux-filenames.html
This commit is contained in:
Jacob Chapman 2022-10-31 17:11:35 -05:00 • committed by GitHub
commit 2d6a14938a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -477,12 +477,18 @@ class Database:
:param parameters: Parameters to use in that query - an iterable for ``where id = ?`` :param parameters: Parameters to use in that query - an iterable for ``where id = ?``
parameters, or a dictionary for ``where id = :id`` parameters, or a dictionary for ``where id = :id``
""" """
if self._tracer: try:
self._tracer(sql, parameters) if self._tracer:
if parameters is not None: self._tracer(sql, parameters)
return self.conn.execute(sql, parameters) if parameters is not None:
else: return self.conn.execute(sql, parameters)
return self.conn.execute(sql) else:
return self.conn.execute(sql)
except UnicodeEncodeError:
sql = sql.encode('utf-8', 'surrogatepass').decode('utf-8')
if parameters is not None:
parameters = parameters.encode('utf-8', 'surrogatepass').decode('utf-8')
return self.execute(sql, parameters)
def executescript(self, sql: str) -> sqlite3.Cursor: def executescript(self, sql: str) -> sqlite3.Cursor:
""" """