def get_song(index):
    try:
        connection = connect_to_db()
        sql = "SELECT * FROM songs WHERE idSong=%s"
        if (connection.is_connected()):
            cursor = connection.cursor(pymysql.cursors.DictCursor)
            cursor.execute(sql, (index, ))
            row = cursor.fetchone()
            if (not row):
                response = jsonify("Song not on DB.")
                response.status_code = 404
            else:
                row_headers = [
                    column_name[0] for column_name in cursor.description
                ]
                response = []
                response.append(dict(zip(row_headers, row)))
                response = jsonify(response)
                response.status_code = 200
            return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (connection.is_connected()):
            cursor.close()
            connection.close()
def id_on_db(id, table):
    try:
        find = False
        if (table == "artists"):
            sql = "SELECT * FROM artists WHERE idArtist=%s"
        elif (table == "albuns"):
            sql = "SELECT * FROM albuns WHERE idAlbum=%s"
        elif (table == "songs"):
            sql = "SELECT * FROM songs WHERE idSong=%s"
        connection = connect_to_db()
        if connection.is_connected():
            cursor = connection.cursor(pymysql.cursors.DictCursor)
            cursor.execute(sql, (id, ))
            row = cursor.fetchone()
            if (not row):
                find = False
            else:
                find = True
        return (find, row)
    except Exception as e:
        print("Error: ", e)
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()
def get_all_songs():
    try:
        sql = "SELECT * FROM songs"
        connection = connect_to_db()
        if (connection.is_connected()):
            cursor = connection.cursor(pymysql.cursors.DictCursor)
            cursor.execute(sql)
            rows = cursor.fetchall()
            row_headers = [
                column_name[0] for column_name in cursor.description
            ]
            response = []
            for result in rows:
                response.append(dict(zip(row_headers, result)))
            response = jsonify(response)
            response.status_code = 200
            return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()
Example #4
0
def group_by_ner():

    con, cur = db_connect.connect_to_db("localhost")
    cur.execute("SELECT article_id, "
                "       compared_article_id "
                "FROM articles.ner_score "
                "WHERE score >= {threshold}"
                .format(threshold=config.NER_THRESHOLD
                        )
                )
    results = cur.fetchall()

    connections = set()
    for res in results:
        connections.add((res[0], res[1]))

    ner_graph = graph.Graph(list(connections))
    groups = ner_graph.return_connections()
    for group in groups:
        title_group = []
        for article_id in group:
            cur.execute("SELECT title "
                        "FROM articles.meta_info "
                        "WHERE id='{}'".format(article_id))
            try:
                result = cur.fetchone()[0]
                title_group.append(result)
            except IndexError:
                print("Id is not in DB.")
        print(title_group)
def delete_songs_album(index):
    try:
        find, _ = helpers.id_on_db(index, "albuns")
        if (not find):
            response = jsonify("Album not on DB.")
            response.status_code = 404
        else:
            connection = connect_to_db()
            sql = "DELETE FROM songs WHERE idAlbumSong=%s"
            if (connection.is_connected()):
                cursor = connection.cursor()
                cursor.execute(sql, (index, ))
                connection.commit()
                response = "Deletion successful."
                response = jsonify(response)
                response.status_code = 200
        return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (find and connection.is_connected()):
            cursor.close()
            connection.close()
def get_all_songs_artist(index):
    try:
        find, _ = helpers.id_on_db(index, "artists")
        if (not find):
            response = jsonify("Artist not on DB.")
            response.status_code = 404
        else:
            connection = connect_to_db()
            sql = "SELECT songs.* FROM songs INNER JOIN albuns ON albuns.idArtistAlbum=%s"
            if (connection.is_connected()):
                cursor = connection.cursor(pymysql.cursors.DictCursor)
                cursor.execute(sql, (index, ))
                rows = cursor.fetchall()
                row_headers = [
                    column_name[0] for column_name in cursor.description
                ]
                response = []
                for row in rows:
                    response.append(dict(zip(row_headers, row)))
            response = jsonify(response)
            response.status_code = 200
        return response
    except Exception as e:
        reponse = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (find and connection.is_connected()):
            cursor.close()
            connection.close()
def get_songs_album(index):
    try:
        find, _ = helpers.id_on_db(index, "albuns")
        if (not find):
            response = jsonify("Album not on DB.")
            response.status_code = 404
        else:
            connection = connect_to_db()
            sql = "SELECT * FROM songs WHERE idAlbumSong = %s"
            data = (index, )
            if (connection.is_connected()):
                cursor = connection.cursor(pymysql.cursors.DictCursor)
                cursor.execute(sql, data)
                rows = cursor.fetchall()
                row_headers = [
                    column_name[0] for column_name in cursor.description
                ]
                response = []
                for result in rows:
                    response.append(dict(zip(row_headers, result)))
            response = jsonify(response)
            response.status_code = 200
        return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (find and connection.is_connected()):
            cursor.close()
            connection.close()
Example #8
0
def create_db_table():
    try:
        connection = db_connect.connect_to_db()
        cursor = connection.cursor()
        cursor.execute(TABLE_SQL)
        cursor.close()
        connection.commit()
    except (Exception, Error) as error:
        print(f'Failed to create table: {error}')
    finally:
        db_connect.close_db(connection)
Example #9
0
  def test_connect_to_db(self,mock):

    # Quando conecta
    mock.return_value.is_connected.return_value = True
    result = connect_to_db()
    self.assertIsNotNone(result)
    self.assertIsInstance(result,unittest.mock.MagicMock)

    # Quando não conecta
    mock.return_value.is_connected.return_value = False
    result = connect_to_db()
    self.assertIsNone(result)
    self.assertNotIsInstance(result,unittest.mock.MagicMock)

    # # Quando ocorre uma exceção
    mock.side_effect = Exception()
    result = connect_to_db()
    self.assertIsNotNone(result)
    self.assertRaises(Exception)
    self.assertIsInstance(result,str)
    self.assertRegex(result,"Error:*")
def update_last_sent(id):
    connection = db_connect.connect_to_db()
    cursor = connection.cursor()
    try:
        cursor.execute(
            '''UPDATE twinspirations SET last_sent = %s WHERE id = %s''',
            ("now", id))
        connection.commit()
    except (Exception, Error) as error:
        print("Error while updating last_sent", error)
    finally:
        # closing database connection.
        db_connect.close_db(connection)
def update_acknowledged_followers_in_db(followers):
    # Updates acknowledged_followers with all new followers

    connection = db_connect.connect_to_db()
    try:
        for follower in followers:
            add_acknowledged_follower(connection, follower)

    except (Exception, Error) as error:
        print("Failed to update acknowledged followers in db", error)
    finally:
        # closing database connection.
        db_connect.close_db(connection)
Example #12
0
def populate_twinspirations(twinspirations):
  connection = db_connect.connect_to_db()
  cursor = connection.cursor()
  try:
    for twinspiration in twinspirations:
      insert_twinspiration(cursor, twinspiration)
    connection.commit()
  except (Exception, Error) as error:
    print(f'Failed to populate twinspirations: {error}')
  finally:
    if (connection):
      if (cursor):
        cursor.close()
      connection.close()
def get_twinspiration():
    connection = db_connect.connect_to_db()
    cursor = connection.cursor()
    twinspiration = ""
    try:
        cursor.execute(
            '''SELECT id,twinspiration FROM twinspirations ORDER BY last_sent LIMIT 1;'''
        )
        twinspirations = cursor.fetchall()
    except (Exception, Error) as error:
        print("Error while fetching data from DB", error)
    finally:
        # closing database connection.
        db_connect.close_db(connection)
    return twinspirations[0]
Example #14
0
def update_follower_count(count):
    # Updates the follower_counts table with the current number of followers and the current timestamp
    connection = db_connect.connect_to_db()
    cursor = connection.cursor()
    try:
        insert_query = '''INSERT INTO follower_counts (COUNT, CREATED_AT) VALUES (%s,%s);'''
        record_to_insert = (count, "now")
        cursor.execute(insert_query, record_to_insert)
        record_count = cursor.rowcount
        if record_count:
            connection.commit()
            print("Updated follower count to ", count)
    except (Exception, Error) as error:
        print("Error updating count: ", error)
    finally:
        db_connect.close_db(connection)
Example #15
0
def create_twinspirations_table():
  try:
    connection = db_connect.connect_to_db()
    cursor = connection.cursor()
    cursor.execute('''CREATE TABLE twinspirations (
      id SERIAL PRIMARY KEY,
      twinspiration VARCHAR(280),
      last_sent TIMESTAMP); ''')
    cursor.close()
    connection.commit()
  except (Exception, Error) as error:
    print(f'Failed to create twinspiration table: {error}')
  finally:
    if (connection):
      if (cursor):
        cursor.close()
      connection.close()
def get_acked_followers():
    # Returns a list of follower ids for already acknowledged followers

    connection = db_connect.connect_to_db()
    cursor = connection.cursor()
    follower_records = []
    get_acked_followers_query = '''SELECT "follower_id" FROM acknowledged_followers order by date_sent desc;'''
    try:
        cursor.execute(get_acked_followers_query)
        follower_records = cursor.fetchall()

    except (Exception, Error) as error:
        print("Error while fetching data from PostgreSQL", error)
    finally:
        # closing database connection.
        db_connect.close_db(connection)
    return collect_follower_ids(follower_records)
def delete_all_songs():
    try:
        sql = "DELETE FROM songs"
        connection = connect_to_db()
        if (connection.is_connected()):
            cursor = connection.cursor()
            cursor.execute(sql)
            connection.commit()
            response = jsonify("Deletion successful")
            response.status_code = 200
            return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (connection.is_connected()):
            cursor.close()
            connection.close()
def on_db(item, table):
    try:
        find = False
        connection = connect_to_db()
        if (table == "artists"):
            sql = "SELECT * FROM artists"
            if (connection.is_connected()):
                cursor = connection.cursor(pymysql.cursors.DictCursor)
                cursor.execute(sql)
                rows = cursor.fetchall()
                for row in rows:
                    if (row[1].lower() == item['name'].lower()):
                        find = True
                        break
        elif (table == "albuns"):
            sql = "SELECT idAlbumItunes FROM albuns"
            if (connection.is_connected()):
                cursor = connection.cursor(pymysql.cursors.DictCursor)
                cursor.execute(sql)
                rows = cursor.fetchall()
                for row in rows:
                    if (row[0] == item):
                        find = True
                        break
        elif (table == "songs"):
            sql = "SELECT idSongItunes FROM songs"
            if (connection.is_connected()):
                cursor = connection.cursor(pymysql.cursors.DictCursor)
                cursor.execute(sql)
                rows = cursor.fetchall()
                for row in rows:
                    if (row[0] == item):
                        find = True
                        break
        return find
    except Exception as e:
        # print("Error: ", e)
        return "Error: " + str(e)
    finally:
        if (connection.is_connected()):
            cursor.close()
            connection.close()
def delete_artist(index):
    try:
        find, _ = helpers.id_on_db(index, "artists")
        if (not find):
            response = jsonify("Artist not on DB.")
            response.status_code = 404
        else:
            sql = "DELETE FROM artists WHERE idArtist = %s"
            connection = connect_to_db()
            if (connection.is_connected()):
                cursor = connection.cursor()
                cursor.execute(sql, (index, ))
                connection.commit()
                response = jsonify("Deletion successful.")
                response.status_code = 200
        return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (find and connection.is_connected()):
            cursor.close()
            connection.close()
def delete_song_album(index_album, index_musica):
    try:
        find, _ = helpers.id_on_db(index_album, "albuns")
        if (not find):
            response = jsonify("Album not on DB.")
            response.status_code = 404
        else:
            findSong, row = helpers.id_on_db(index_musica, "songs")
            if (not findSong):
                response = jsonify("Song not on DB.")
                response.status_code = 404
            else:
                if (row[7] == index_album):
                    connection = connect_to_db()
                    if (connection.is_connected()):
                        sql = "DELETE FROM songs WHERE idSong=%s"
                        cursor = connection.cursor()
                        cursor.execute(sql, (index_musica, ))
                        connection.commit()
                        response = "Deletion successful."
                        response = jsonify(response)
                        response.status_code = 200
                else:
                    response = "Song not from album."
                    response = jsonify(response)
                    response.status_code = 200
        return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (find and findSong and row[7] == index_album
                and connection.is_connected()):
            cursor.close()
            connection.close()
Example #21
0
#!/usr/bin/env python
from __future__ import print_function

import calculate_distance
import db_connect
import json
import pymysql
import re
from datetime import *
from dateutil.parser import parse


conn = db_connect.connect_to_db()
cur = conn.cursor()


def get_all_employee_addresses():
    sql = "SELECT employee_id, CONCAT(first_name, ' ', last_name) as full_name, " \
        "CONCAT(address_num, ' ', street, '. ', " \
        "city, ', ', state, ' ' , zip) as full_address, work_level FROM employees ORDER BY last_name"
    cur.execute(sql)
    return cur.fetchall()


def get_employee_address(emp):
    sql = "SELECT CONCAT(address_num, ' ', street, '. ', city, ', ', state, ' ', zip) FROM employees " \
          "WHERE employee_id=" + str(emp)
    cur.execute(sql)
    return cur.fetchone()

def add_song(index):
    try:
        newSong = request.get_json()
        noParamName = False
        inputNotString = False
        if (not newSong):
            response = jsonify("No Body in request.")
            response.status_code = 400
        elif ("name" not in newSong.keys()):
            noParamName = True
            response = jsonify("No name parameter in request body.")
            response.status_code = 400
        elif (type(newSong["name"]) != str):
            inputNotString = True
            response = jsonify("Name parameter must be str type.")
            response.status_code = 400
        else:
            findAlbum, row = helpers.id_on_db(index, "albuns")
            if (not findAlbum):
                response = jsonify("Album not on DB.")
                response.status_code = 404
            else:
                connection = connect_to_db()
                if (connection.is_connected()):
                    cursor = connection.cursor()
                    albumId = row[5]
                    if (not albumId):
                        response = jsonify("Album not on iTunes, no Songs.")
                        response.status_code = 200
                    else:
                        songs = helpers.get_type_from_id(albumId, "song")
                        if (type(songs) == str):
                            response = jsonify(songs)
                            response.status_code = 400
                        else:
                            dataToSave = []
                            for song in songs:
                                if (song['trackName'].lower() ==
                                        newSong['name'].lower()):
                                    dataToSave.append({
                                        'nameSong':
                                        song['trackName'],
                                        'explicit':
                                        song['trackExplicitness'],
                                        'genre':
                                        song['primaryGenreName'],
                                        'idSongItunes':
                                        song['trackId'],
                                        'nameArtistSong':
                                        song['artistName'],
                                        'nameAlbumSong':
                                        song['collectionName'],
                                        'artistIdItunes':
                                        song['artistId']
                                    })
                                    break
                            if (not dataToSave):
                                response = jsonify("Song not on iTunes.")
                                response.status_code = 200
                            else:
                                findSong = helpers.on_db(
                                    dataToSave[0]['idSongItunes'], "songs")
                                if (findSong):
                                    response = jsonify("Song already on DB.")
                                    response.status_code = 200
                                else:
                                    sql = "INSERT INTO songs (nameSong, explicit, genre, idSongItunes, nameArtistSong, nameAlbumSong, idAlbumSong) VALUES (%s,%s,%s,%s,%s,%s,%s)"
                                    data = (dataToSave[0]['nameSong'],
                                            dataToSave[0]['explicit'],
                                            dataToSave[0]['genre'],
                                            dataToSave[0]['idSongItunes'],
                                            dataToSave[0]['nameArtistSong'],
                                            dataToSave[0]['nameAlbumSong'],
                                            index)
                                    cursor.execute(sql, data)
                                    connection.commit()
                                    response = jsonify("Added successful.")
                                    response.status_code = 200
        return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (newSong and not noParamName and not inputNotString and findAlbum
                and connection.is_connected()):
            cursor.close()
            connection.close()
def update_artist(index):
    try:
        artist = request.get_json()
        noParamName = False
        if (not artist):
            response = jsonify("No Body in request.")
            response.status_code = 400
        elif ("name" not in artist.keys()):
            noParamName = True
            response = jsonify("No name parameter in request body.")
            response.status_code = 400
        else:
            find, _ = helpers.id_on_db(index, "artists")
            if (not find):
                response = jsonify("Artist not on DB.")
                response.status_code = 404
            else:
                result = helpers.is_on_itunes(artist['name'])
                if (type(result) == str):
                    response = jsonify(result)
                    response.status_code = 400
                else:
                    connection = connect_to_db()
                    if (connection.is_connected()):
                        # Deletar todos os albuns e musicas do artista antes
                        cursor = connection.cursor()
                        sql = "DELETE FROM albuns WHERE idArtistAlbum=%s"
                        cursor.execute(sql, (index, ))
                        if (not result[0]):
                            # Sem ID iTunes
                            id = None
                            name = artist['name']
                        else:
                            # Com ID iTunes
                            id = result[1]
                            name = result[2]
                            # Colocar albuns no BD
                            helpers.add_all_items_to_db(
                                id, index, "album", cursor)
                            # Pegar IDs albuns do artista
                            sql = "SELECT idAlbum,idAlbumItunes FROM albuns WHERE idArtistAlbum=%s"
                            cursor.execute(sql, (index, ))
                            rows = cursor.fetchall()
                            # app.logger(rows)
                            # Colocar musicas nos albuns
                            for row in rows:
                                helpers.add_all_items_to_db(
                                    row[1], row[0], "song", cursor)
                        findNameArtist = helpers.on_db(artist, "artists")
                        if (not findNameArtist):
                            sql = "UPDATE artists SET nameArtist = %s, idArtistItunes=%s WHERE idArtist= %s"
                            data = (name, id, index)
                            cursor.execute(sql, data)
                            connection.commit()
                            response = jsonify("Update successful.")
                            response.status_code = 200
                        else:
                            response = jsonify("Artist already on DB.")
                            response.status_code = 200
        return response
    except Exception as e:
        print("Error: ", e)
    finally:
        if (artist and not noParamName and find and type(result) != str
                and connection.is_connected()):
            cursor.close()
            connection.close()
def add_album(index):
    try:
        newAlbum = request.get_json()
        noParamName = False
        inputNotString = False
        if (not newAlbum):
            response = jsonify("No Body in request.")
            response.status_code = 400
        elif ("name" not in newAlbum.keys()):
            noParamName = True
            response = jsonify("No name parameter in request body.")
            response.status_code = 400
        elif (type(newAlbum["name"]) != str):
            inputNotString = True
            response = jsonify("Name parameter must be str type.")
            response.status_code = 400
        else:
            findArtist, row = helpers.id_on_db(index, "artists")
            if (not findArtist):
                response = jsonify("Artist not on DB.")
                response.status_code = 404
            else:
                connection = connect_to_db()
                if (connection.is_connected()):
                    cursor = connection.cursor()
                    artistId = row[2]
                    if (not artistId):
                        response = jsonify("Artist not on iTunes, no Albuns.")
                        response.status_code = 200
                    else:
                        albuns = helpers.get_type_from_id(artistId, "album")
                        if (type(albuns) == str):
                            response = albuns
                            response = jsonify(response)
                            response.status_code = 400
                        else:
                            dataToSave = []
                            for album in albuns:
                                if (album['collectionName'].lower() ==
                                        newAlbum['name'].lower()):
                                    dataToSave.append({
                                        'nameAlbum':
                                        album['collectionName'],
                                        'trackCount':
                                        album['trackCount'],
                                        'explicit':
                                        album['collectionExplicitness'],
                                        'genre':
                                        album['primaryGenreName'],
                                        'idAlbumItunes':
                                        album['collectionId'],
                                        'nameArtistAlbum':
                                        album['artistName'],
                                        'artistIdItunes':
                                        album['artistId']
                                    })
                                    break
                            if (not dataToSave):
                                response = jsonify("Album not on iTunes.")
                                response.status_code = 200
                            else:
                                findAlbum = helpers.on_db(
                                    dataToSave[0]['idAlbumItunes'], "albuns")
                                if (findAlbum):
                                    response = jsonify("Album already on DB.")
                                    response.status_code = 200
                                else:
                                    sql = "INSERT INTO albuns (nameAlbum, trackCount,explicit,genre,idAlbumItunes, nameArtistAlbum, idArtistAlbum) VALUES (%s,%s,%s,%s,%s,%s,%s)"
                                    data = (dataToSave[0]['nameAlbum'],
                                            dataToSave[0]['trackCount'],
                                            dataToSave[0]['explicit'],
                                            dataToSave[0]['genre'],
                                            dataToSave[0]['idAlbumItunes'],
                                            dataToSave[0]['nameArtistAlbum'],
                                            index)
                                    cursor.execute(sql, data)
                                    connection.commit()
                                    response = jsonify("Added successful.")
                                    response.status_code = 200
        return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (newAlbum and not noParamName and not inputNotString and findArtist
                and connection.is_connected()):
            cursor.close()
            connection.close()
def add_artist():
    try:
        artist = request.get_json()
        noParamName = False
        notStr = False
        if (not artist):
            response = jsonify("No Body in request.")
            response.status_code = 400
        elif ("name" not in artist.keys()):
            noParamName = True
            response = jsonify("No name parameter in request body.")
            response.status_code = 400
        elif (type(artist['name']) != str):
            notStr = True
            response = jsonify("Name parameter must be str type.")
            response.status_code = 400
        else:
            connection = connect_to_db()
            cursor = connection.cursor()
            find = helpers.on_db(artist, "artists")
            if (find):
                response = jsonify("Artist already on DB.")
                response.status_code = 200
            else:
                result = helpers.is_on_itunes(artist['name'])
                if (type(result) == str):
                    response = jsonify(result)
                    response.status_code = 400
                else:
                    if (not result[0]):
                        id = None
                        name = artist['name']
                    else:
                        id = result[1]
                        name = result[2]
                    if (connection.is_connected()):
                        sql = "INSERT INTO artists (nameArtist,idArtistItunes) VALUES (%s,%s)"
                        data = (name, id)
                        cursor.execute(sql, data)
                        if (id):
                            # Pegar ID do artista
                            sql = "SELECT idArtist FROM artists WHERE nameArtist=%s"
                            data = (name, )
                            cursor = connection.cursor(
                                pymysql.cursors.DictCursor)
                            cursor.execute(sql, data)
                            row = cursor.fetchone()
                            # Colocar albuns no BD
                            helpers.add_all_items_to_db(
                                id, row[0], "album", cursor)

                            # Pegar IDs albuns do artista
                            sql = "SELECT idAlbum,idAlbumItunes FROM albuns WHERE idArtistAlbum=%s"
                            data = (row[0], )
                            cursor.execute(sql, data)
                            rows = cursor.fetchall()
                            # Colocar musicas nos albuns
                            for row in rows:
                                helpers.add_all_items_to_db(
                                    row[1], row[0], "song", cursor)
                                # app.logger.info(aux)

                        response = jsonify("Added successful.")
                        response.status_code = 200
                        # Commit só depois que adicionar artista, checar e adicionar albuns e checar e adicionar musicas
                        connection.commit()
        return response
    except Exception as e:
        response = jsonify("Error: " + str(e))
        response.status_code = 400
        return response
    finally:
        if (artist and not notStr and not noParamName
                and connection.is_connected()):
            cursor.close()
            connection.close()