UPDATE: RESOLVIDO
To criando um aplicativo python que guarda as músicas que ouço em um banco sqlite.
Criei três tabelas:
Como eu faço pro SQLite inserir o item caso ele não exista e caso ele exista, incrementar o plays com +1? Sei que tem o INSERT OR REPLACE, mas não entendo bulhufas de banco de dados e to perdidão nas minhas buscas.
Por enquanto as funções de inserir estão assim:
Consegui, migos.
Tirei o id integer PRIMARY KEY das tabelas e deixei os nomes do artista, musica e album como PRIMARY KEY.
To criando um aplicativo python que guarda as músicas que ouço em um banco sqlite.
Criei três tabelas:
Python:
sql_create_tracks_table = """ CREATE TABLE IF NOT EXISTS tracks (
id integer PRIMARY KEY,
title text NOT NULL,
album_id integer,
plays integer DEFAULT 0,
FOREIGN KEY (album_id) REFERENCES albums (id)
);"""
sql_create_albums_table = """ CREATE TABLE IF NOT EXISTS albums (
id integer PRIMARY KEY,
title text NOT NULL,
artist_id integer,
plays integer DEFAULT 0,
FOREIGN KEY (artist_id) REFERENCES artists (id)
);"""
sql_create_artists_table = """ CREATE TABLE IF NOT EXISTS artists (
id integer PRIMARY KEY,
name text NOT NULL,
plays integer DEFAULT 0
);"""
Como eu faço pro SQLite inserir o item caso ele não exista e caso ele exista, incrementar o plays com +1? Sei que tem o INSERT OR REPLACE, mas não entendo bulhufas de banco de dados e to perdidão nas minhas buscas.
Por enquanto as funções de inserir estão assim:
Python:
def create_tracks(conn, track):
""" insert current song into the database """
sql = """ INSERT INTO tracks(title, album_id, plays) VALUES(?,?,?) """
cur = conn.cursor()
cur.execute(sql, track)
conn.commit()
return cur.lastrowid
def create_albums(conn, album):
""" insert or replace current album into the database """
sql = """ INSERT INTO albums(title, artist_id, plays) VALUES(?,?,?) """
cur = conn.cursor()
cur.execute(sql, album)
conn.commit()
return cur.lastrowid
def create_artists(conn, artist):
""" insert current artist into the database """
sql = """ INSERT INTO artists(name, plays) VALUES(?,?) """
cur = conn.cursor()
cur.execute(sql, artist)
conn.commit()
return cur.lastrowid
--- Post duplo é unido automaticamente: ---
Consegui, migos.
Python:
def create_tracks(conn, track):
""" insert current song into the database """
sql = """ INSERT INTO tracks(title, album_name, plays) VALUES(?,?,?) ON CONFLICT(title) DO UPDATE SET plays=plays+1"""
cur = conn.cursor()
cur.execute(sql, track)
conn.commit()
return cur.lastrowid
def create_albums(conn, album):
""" insert or replace current album into the database """
sql = """ INSERT INTO albums(title, artist_name, plays) VALUES(?,?,?) ON CONFLICT(title) DO UPDATE SET plays=plays+1"""
cur = conn.cursor()
cur.execute(sql, album)
conn.commit()
return cur.lastrowid
def create_artists(conn, artist):
""" insert current artist into the database """
sql = """ INSERT INTO artists(name, plays) VALUES(?, 1) ON CONFLICT(name) DO UPDATE SET plays=plays+1"""
cur = conn.cursor()
cur.execute(sql, artist)
conn.commit()
return cur.lastrowid
Tirei o id integer PRIMARY KEY das tabelas e deixei os nomes do artista, musica e album como PRIMARY KEY.
Última edição: