def __init__(self, dbfile=None, scan_changes=True, silent=False):
if not dbfile:
dblocation = appdirs.user_data_dir("PythonJukebox", "Razorvine")
os.makedirs(dblocation, mode=0o700, exist_ok=True)
dbfile = os.path.join(dblocation, "tracks.sqlite")
dbfile = os.path.abspath(dbfile)
self.dbfile = dbfile
self.dbconn = sqlite3.connect(dbfile, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
self.dbconn.row_factory = sqlite3.Row # make sure we can get results by column name
self.dbconn.execute("PRAGMA foreign_keys=ON")
try:
self.dbconn.execute("SELECT COUNT(*) FROM tracks").fetchone()
if not silent:
print("Connected to database.")
print("Database file:", dbfile)
if scan_changes:
self.scan_changes()
except sqlite3.OperationalError:
# the table does not yet exist, create the schema
if not silent:
print("Creating new database.")
print("Database file:", dbfile)
self.dbconn.execute("""CREATE TABLE tracks
(
id integer PRIMARY KEY,
title nvarchar(260),
artist nvarchar(260),
album nvarchar(260),
year int,
genre nvarchar(100),
duration real NOT NULL,
modified timestamp NOT NULL,
location nvarchar(500) NOT NULL,
hash char(40) NOT NULL UNIQUE
);""")
评论列表
文章目录