Database

All databases have a table ‘’meta’’ with the following scheme:

id

key

value

key:

A string to identify a meta data variable

value:

The value to a key as string

One important key is ‘’version’ that allows to identify old schemes and allows an easy update of the database. There may be other keys depending on the databases. In that case they are described in the documentations of the related modules.

Database Class

class musicdb.lib.db.database.Database(path)[source]

This is the base class for all database classes in MusicDB. It establishes the connection to the sqlite3 databases.

The connection timeout is set to 20.

Parameters

path (str) – absolute path to the database file.

Raises

TypeError – When path is not a string

Compress(string)[source]

This method can be used to compress a string before storing it into the database.

To keep a consistent database, use only this method and the complementary method Decompress(). It uses gzip for compression.

Parameters

string (str) – A string to compress

Returns

A byte blob with the compresses string

Decompress(blob)[source]

This method can be used to decompress a compresses string after reading it from the database.

To keep a consistent database, use only this method and the complementary method Compress(). It uses gzip for decompression.

Parameters

blob – A byte blob with the compresses string

Returns

The decompresses string

Execute(sql, values=None)[source]

This method executes a SQL command. When the command fails, the database gets rolled back. Otherwise the changes gets committed.

values can be a single value, a list, a dictionary or a tuple.

Parameters
  • sql (str) – SQL command

  • values – Optional arguments used in the command

Returns

None

Raises

TypeError – When sql is not a string

Examples

db = Database("test.db")

sql    = "INSERT INTO valuetable (name, content) VALUES (?, ?)"
values = ("Name", 1000)

db.Execute(sql, values)
db = Database("test.db")

sql    = "UPDATE valuetable SET content = ? WHERE name = ?"
values = (1000, "Name")

db.Execute(sql, values)
ExecuteScript(sqlscript)[source]

This method executes multiple SQL commands stored in sqlscript. When the command fails, the database gets rolled back. Otherwise the changes gets committed.

Parameters

sqlscript (str) – SQL script

Returns

None

Raises

TypeError – When sqlscript is not a string

GetFromDatabase(sql, values=None)[source]

This method gets values from the database by executing a SQL command and fetching the results. When the command fails, the database gets rolled back.

values can be a single value, a list, a dictionary or a tuple.

This method returns a list of tuples. Each list element corresponds to one returned row. Each row is represented by a tuple of values.

If only one value is expected, it is [(x,)].

Parameters
  • sql (str) – SQL command

  • values – Optional arguments used in the command

Returns

The results of the SQL command

Raises

TypeError – When sql is not a string

Example

db = Database("test.db")

sql = "SELECT name FROM valuetable WHERE content = ?"

results = db.Execute(sql, 1000)
if not results:
    print("No entries with value 1000 in database")
    return

for entry in results:
    print(entry[0])