File: db.py

package info (click to toggle)
command-not-found 23.04.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,064 kB
  • sloc: python: 1,008; sh: 29; makefile: 9
file content (29 lines) | stat: -rw-r--r-- 868 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/python3

import sqlite3

import apt_pkg
apt_pkg.init()


class SqliteDatabase(object):

    def __init__(self, filename):
        self.con = sqlite3.connect(filename)
        self.component = ""

    def lookup(self, command):
        # deal with invalid unicode (LP: #1130444)
        command = command.encode("utf-8", "surrogateescape").decode("utf-8", "replace")
        results = []
        for row in self.con.execute(
                """
                SELECT packages.name, packages.version, packages.component
                FROM commands
                INNER JOIN packages on packages.pkgID = commands.pkgID
                WHERE commands.command=?
                ORDER BY packages.priority DESC
                """, (command,)).fetchall():
            results.append( (row[0], row[1], row[2]) )
        return results