Skip to content

Unable to open database of udgerdb_v3.dat #10

@eswarrb

Description

@eswarrb
from udger import Udger
import os.path
def ua_parse(user_agent):
    filepath = os.path.abspath('./udger-updater-linux/udgerdb_v3.dat')
    udger = Udger(filepath)
    result = udger.parse_ua(user_agent)
    return result
ua = 'Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53'
ua_parse(ua)
---------------------------------------------------------------------------
OperationalError                         
Traceback (most recent call last)
Cell In[15], line 9
      7     return result.user_agent.popularity_index >= 50
      8 ua = 'Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53'
----> 9 is_popular_ua(ua)

Cell In[15], line 6, in is_popular_ua(user_agent)
      4 filepath = os.path.abspath('udgerdb_v3.dat')
      5 udger = Udger(filepath)
----> 6 result = udger.parse_ua(user_agent)
      7 return result.user_agent.popularity_index >= 50

File ~./udger/parser.py:14, in Udger.parse_ua(self, ua_string)
     11     if cached is not None:
     12         return cached
---> 14 ua, class_id, client_id = self._client_detector(ua_string)
     15 is_crawler = (ua['ua_class'] == 'Crawler')
     17 opsys = self._os_detector(ua_string, client_id) if not is_crawler else None

File ~./udger/parser.py:87, in Udger._client_detector(self, ua_string)
     86 def _client_detector(self, ua_string):
---> 87     ua = self.db_get_first_row(Queries.crawler_sql, ua_string)
     88     if ua:
     89         del ua['class_id']

File ~./udger/base.py:221, in UdgerBase.db_get_first_row(self, sql, *params)
    218     def db_get_first_row(self, sql, *params):
    219 #        self.last_regexp_match = None
--> 221         self.db_cursor.execute(sql, params)
    223         for row in self.db_cursor:
    224             return row

File ~./udger/base.py:36, in cached_property.__get__(self, instance, unused_type)
     34 if instance is None:
     35     return self
---> 36 res = instance.__dict__[self.func.__name__] = self.func(instance)
     37 return res

File ~./udger/base.py:142, in UdgerBase.db_cursor(self)
    139     @cached_property
    140     def db_cursor(self):
    141         db_filepath = os.path.join(self.data_dir, self.db_filename)
--> 142         db = sqlite3.connect(db_filepath)
    143 #        db.create_function("REGEXP", 2, self.regexp_func)
    145         cursor = db.cursor()

OperationalError: unable to open database file 

Why is this happening and what can be the possible fix for this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions