yokadi
yokadi copied to clipboard
AttributeError: 'Engine' object has no attribute 'has_table'
Hey!
This may be something related to my local environment, but after recent apt full-upgrade
(I'm on Debian Trixie) I'm getting this error with yokadi
:
$ yokadi
Traceback (most recent call last):
File "/usr/bin/yokadi", line 11, in <module>
main.main()
File "/usr/lib/python3/dist-packages/yokadi/ycli/main.py", line 225, in main
db.connectDatabase(dbPath)
File "/usr/lib/python3/dist-packages/yokadi/core/db.py", line 304, in connectDatabase
_database = Database(dbFileName, createIfNeeded, memoryDatabase)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/yokadi/core/db.py", line 348, in __init__
self.checkVersion()
File "/usr/lib/python3/dist-packages/yokadi/core/db.py", line 375, in checkVersion
version = self.getVersion()
^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/yokadi/core/db.py", line 357, in getVersion
if not self.engine.has_table("config"):
^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Engine' object has no attribute 'has_table'
Quick googling reveals that engine.has_table()
seems to be deprecated. My quick fix was to import inspect
and use Inspector.has_table() instead:
$ git diff
diff --git a/yokadi/core/db.py b/yokadi/core/db.py
index c97b9db..2de4db9 100644
--- a/yokadi/core/db.py
+++ b/yokadi/core/db.py
@@ -12,7 +12,7 @@ import sys
from datetime import datetime
from uuid import uuid1
-from sqlalchemy import create_engine
+from sqlalchemy import create_engine, inspect
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import scoped_session, sessionmaker, relationship
@@ -352,7 +352,8 @@ class Database(object):
Base.metadata.create_all(self.engine)
def getVersion(self):
- if not self.engine.has_table("config"):
+ insp = inspect(self.engine)
+ if not insp.has_table("config"):
# There was no Config table in v1
return 1
Cheers, Sergey