Skip to content

Commit cd1fe86

Browse files
authored
Merge pull request #92
QoS improvements: fixed QT Layer warnings on macos, added db tracing,…
2 parents 9ab7d33 + b774420 commit cd1fe86

File tree

4 files changed

+29
-5
lines changed

4 files changed

+29
-5
lines changed

.gitignore

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
__pycache__
22
/venv
33
/.idea
4+
/.vscode
5+
6+
# unit testing
7+
*.prof
8+
.coverage
9+
10+
# generated by app
411
/jal/jal.sqlite
5-
/jal.egg-info
12+
/jal.egg-info
13+
*.log
14+
jal_faults.log

jal/db/db.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import logging
77
import sqlparse
88
from configparser import ConfigParser
9-
from pkg_resources import parse_version
9+
from packaging.version import Version
1010
from PySide6.QtCore import QStandardPaths
1111
from PySide6.QtWidgets import QApplication, QMessageBox
1212
from PySide6.QtSql import QSql, QSqlDatabase, QSqlQuery, QSqlTableModel
@@ -79,6 +79,8 @@ def message(self):
7979
class JalDB:
8080
_tables = []
8181
_instances_with_cache = []
82+
_sql_call_count = 0
83+
_trace_sql_requests = os.environ.get('TRACE_SQL', '').upper() == 'YES'
8284
PATH_APP = auto()
8385
PATH_DB_FILE = auto()
8486
PATH_LANG = auto()
@@ -133,7 +135,7 @@ def init_db(self) -> JalDBError:
133135
error = db.lastError()
134136
return JalDBError(JalDBError.DbInitFailure, details=f"{error.driverText()}: {error.databaseText()}, file: {db_file}")
135137
sqlite_version = self.get_engine_version()
136-
if parse_version(sqlite_version) < parse_version(Setup.SQLITE_MIN_VERSION):
138+
if Version(sqlite_version) < Version(Setup.SQLITE_MIN_VERSION):
137139
db.close()
138140
return JalDBError(JalDBError.OutdatedSqlite)
139141
JalDB._tables = db.tables(QSql.Tables) + db.tables(QSql.Views) # Bitwise or somehow doesn't work here :(
@@ -216,6 +218,8 @@ def _exec(cls, sql_text, params=None, forward_only=True, commit=False):
216218
for param in params:
217219
query.bindValue(param[0], param[1])
218220
assert query.boundValue(param[0]) == param[1], f"SQL: failed to assign parameter {param} in '{sql_text}'"
221+
if JalDB._trace_sql_requests:
222+
cls._log_query(query)
219223
if not query.exec():
220224
error = JalSqlError(query.lastError().text())
221225
if error.custom():
@@ -227,6 +231,17 @@ def _exec(cls, sql_text, params=None, forward_only=True, commit=False):
227231
db.commit()
228232
return query
229233

234+
# -------------------------------------------------------------------------------------------------------------------
235+
# Logs given query as SQL statement with parameters
236+
@classmethod
237+
def _log_query(cls, query):
238+
JalDB._sql_call_count = JalDB._sql_call_count + 1
239+
query_text = query.lastQuery()
240+
for k, v in zip(query.boundValueNames(), query.boundValues()):
241+
v = f"'{v}'" if type(v) == str else v
242+
query_text = query_text.replace(k, str(v))
243+
logging.debug(f"Trace SQL {JalDB._sql_call_count}: {query_text}")
244+
230245
# ------------------------------------------------------------------------------------------------------------------
231246
# Reads the result of 'sql_test' query from the database (with given params - the same as for _exec() method)
232247
# returns result of the query or None if result is empty

jal/jal.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def main():
3030
translator_installed = False
3131
translator = None
3232
sys.excepthook = exception_logger
33-
os.environ['QT_MAC_WANTS_LAYER'] = '1' # Workaround for https://bugreports.qt.io/browse/QTBUG-87014
3433
app = QApplication([])
3534

3635
error = JalDB().init_db()

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ jsonschema
88
sqlparse
99
oauthlib
1010
requests-oauthlib
11-
setuptools
11+
setuptools
12+
packaging

0 commit comments

Comments
 (0)