A music player with the SQLite logo, some tapes and vinyl records around, and several vinyl records in the background.
Agence web » Actualités du digital » Comment je suive ma collection de musique avec une base de données SQLite facile

Comment je suive ma collection de musique avec une base de données SQLite facile

Résumé

  • SQLite est idéal pour gérer localement une collection de musique physique.

  • SQLite a un processus d'installation facile, adapté aux individus sans expérience de base de données. L'interdiction de GUI comme le navigateur DB simplifie également la gestion de la base de données pour les utilisateurs novices.

  • Les fonctionnalités de SQLite comme le typage dynamique permettent une gestion et une personnalisation efficaces des bases de données, permettant une organisation optimale.

Si vous êtes un fan de musique, vous avez probablement des étagères de disques ou de CD. Comment les suivre? Vous pouvez utiliser une base de données, mais ne sont-elles pas compliquées à configurer? SQLite est un outil puissant qui vous permet de configurer des bases de données SQL sans serveur. C'est étonnamment facile à installer. Voici comment je l'ai fait, malgré une vague connaissance de SQL.

Pourquoi sqlite?

Il y a encore quelque chose dans une collection de musique physique, même à l'ère du streaming. C'est pourquoi les ventes de disques vinyle ont augmenté au cours des dernières années, selon la RIAA. Le nouveau format musical le plus chaud n'est pas Spotify, MP3 ou Flac, mais le bon vieux LP.

Étant un millénaire, mes habitudes d'écoute musicales ont été formées dans la fin de la « Era ». Cela signifiait collecter des albums. Comme c'était les années 90 lorsque j'ai commencé à m'intéresser sérieusement à la musique, le format dominant était le CD, à moins de quelques anciens manivelles qui préféraient le vinyle. (Qui voudrait ces anciens records?)

Lorsque vous avez une collection physique substantielle de tout type, pas seulement de la musique, il devient difficile pour une personne de le suivre. C'est là que les bases de données entrent en jeu. La base de données relationnelle, avec ses lignes et ses colonnes, est facile à comprendre, mais SQL a la réputation d'être difficile à apprendre. J'y suis exposé dans une classe de systèmes d'information informatique collégiale, mais je voulais devenir plus à l'aise avec les bases de données et SQL.

J'ai pensé à installer un serveur de base de données sur ma machine comme MySQL ou PostgreSQL, mais ce sont de grands systèmes complexes qui ont besoin de beaucoup de travail à entretenir. Je suis juste un gars avec un clavier et une caisse d'albums.

J'aurais également pu configurer une base de données dans Discogs. J'ai un compte d'utilisateur là-bas, mais je voulais une base de données qui s'exécuterait localement sous mon contrôle. J'aurais même pu le configurer comme une base de données à fichiers plates à l'aide d'outils de texte Linux, mais cela ne s'allongerait pas vers une plus grande collection.

Sqlite semblait idéal. C'était une base de données relationnelle qui a utilisé SQL comme langue de requête. Il est léger et il fonctionnera sans serveur. De nombreuses applications du monde réel ont utilisé SQLite, y compris iTunes. Si SQLite peut gérer une bibliothèque musicale numérique, j'ai pensé qu'elle pourrait facilement gérer une bibliothèque physique. C'est peut-être la raison pour laquelle des collections d'enregistrements sont des exemples populaires pour la mise en place de bases de données relationnelles. Ils sont comme le « Hello, World! » des bases de données.

Installation de Sqlite

Étant donné que Sqlite est gratuit et disponible dans tant de distros Linux, tout ce que j'avais à faire était d'utiliser APT dans Ubuntu (c'était en WSL, mais ce serait la même chose dans n'importe quelle version de Debian ou Ubuntu):

        sudo apt install sqlite
    

C'était ça. J'ai fait installer Sqlite en un. Cela montre à quel point il est facile d'installer SQLite.

J'aurais pu télécharger la version Windows native, mais je préfère juste Linux pour des trucs liés à la programmation. Les systèmes de type UNIX sont les meilleurs pour les projets de programmation grands et petits, et c'est pourquoi WSL existe.

Création de la base de données

Avec SQLite installé, il était temps de commencer à créer ma base de données. J'ai pensé à ce dont j'aurais besoin. Une base de données pour ma collection de CD et de LPS devrait avoir des champs pour l'artiste, le titre, l'année de la version originale et le format.

J'ai commencé le client de ligne de commande avec le nom du fichier de base de données que je voulais créer:

        
sqlite3 music.db

J'ai entré le code SQL pour créer le tableau:

        
CREATE TABLE albums (artist,title,year,format)

Terminez chaque instruction SQL avec un caractère semi-collé (;).

La bonne chose à propos de SQLite par rapport aux autres systèmes de base de données est que je n'avais pas besoin de coder dur les types de données au préalable. SQLite utilise le typage dynamique, où il devine quel type de données le champ contient par ce que vous y mettez. Si vous mettez une chaîne de caractères, il décide que le champ est une chaîne. Cela m'a fait gagner du temps et des efforts pour définir la table.

Bien que les déclarations SQL soient traditionnellement écrites en majuscules, ce n'est pas nécessaire. Il s'agit d'une convention, mais vous pouvez entrer dans les commandes minuscules puisque SQLite accepte non plus. Les développeurs SQLite utilisent des minuscules dans leur documentation.

Avec le tableau créé, je devais maintenant y mettre des enregistrements, et je veux dire les enregistrements de la base de données, et non les enregistrements vinyle. C'est là que l'insert en commande entre en jeu.

        
INSERT INTO albums VALUES ("Pink Floyd", "The Dark Side of the Moon", 1973,"LP",)

Je pourrais le faire pour toute ma collection, mais il existe un moyen plus facile. La saisie de toutes les instructions SQL peut être fastidieuse, il y a donc plusieurs fronts d'assistance disponibles. Un bon navigateur DB. Il est similaire à PhpMyAdmin pour les bases de données MySQL. Il s'agit d'un frontal GUI qui vous permet de créer et de manipuler facilement les bases de données SQLite.

Tout ce que j'avais à faire était de l'installer également dans Ubuntu, bien qu'il soit également disponible pour Windows.

Pour l'installer sur Ubuntu, utilisez cette commande:

        
sudo apt install sqlitebrowser

Pour travailler sur une base de données SQLite, j'ouvre simplement le fichier music.db que j'ai créé en allant à Fichier> Ouvrir la base de données> et la navigation vers le fichier de base de données. Avec la base de données créée, je peux ajouter des champs avec l'onglet « Browse Data », puis appuyez sur le bouton « Insérer l'enregistrement ». Il montre une table similaire à une feuille de calcul. Je peux remplir les champs des albums que j'ai. Dans les coulisses, il utilise les transactions mentionnées plus tard pour se prémunir contre les changements indésirables.

Même s'il s'agit d'une base de données personnelle, je veux établir de bonnes habitudes. Lorsque vous travaillez avec des données, il est préférable d'avoir une sauvegarde. Le client de ligne de commande SQLite me permet d'enregistrer une copie de sauvegarde de ma base de données avec la commande .backup:

        
.backup music.db.bak

J'aurais pu appeler le fichier tout ce que je voulais, mais j'ai tendance à utiliser l'extension .bak pour les copies de sauvegarde des fichiers.

Lorsque vous travaillez sur une base de données, vous voulez avoir un moyen de faire reculer les changements si quelque chose que vous faites provoque quelque chose de mal. SQLite, comme de nombreux autres systèmes de base de données, a un système de transaction. Avec les transactions de base de données, une opération termine ou ne le fait pas.

Plus important encore, si vous faites une erreur, vous pouvez revenir aux états précédents avec la commande Rollback. C'est comme l'opération d'annulation dans un traitement de texte.

Tom Scott a appris à la dure les dangers de négliger d'utiliser les transactions et les sauvegardes tout en travaillant sur une base de données:

Pour démarrer une transaction, utilisez cette commande:

        BEGIN TRANSACTION;
    

Tout ce que vous faites à la base de données sera affiché, comme l'ajout, la suppression ou la modification des enregistrements, mais ils ne seront enregistrés qu'à la fin d'une transaction, avec la commande de validation:

        COMMIT;
    

Voici un exemple d'ajout de quelques albums à la base de données

        
BEGIN TRANSACTION;
INSERT INTO albums VALUES ("Pearl Jam","Ten",1991,"CD");
INSERT INTO albums VALUES ("Nirvana", "Nevermind",1991,"CD");
INSERT INTO albums VALUES ("Pink Floyd","Wish You Were Here", 1975,"Pink Floyd Records");
COMMIT;

Faites une copie de sauvegarde et activez les transactions avant d'apporter des modifications à une base de données.

Explorer ma base de données

Avec ma base de données devenant lentement peuplée, je pouvais essayer de l'interroger. Par défaut, SQLite sort enregistre des enregistrements séparés par un « | » personnage. Pour les voir dans les colonnes, je définis le mode:

        .mode column
    

Les commandes qui font partie de SQLite 3 comme celle-là n'utilisent pas de point-virgule à la fin.

Pour voir toute ma collection, je pourrais utiliser la commande SELECT *:

        SELECT * FROM albums;
    

Le * est un joker, similaire aux wildcards sur la coque Linux, qui me permet de sélectionner chaque enregistrement. Bien sûr, je ne voudrais voir que quelques records de temps. Je peux le faire avec la commande limite:

        SELECT * FROM albums LIMIT 5;

Pour trouver des champs qui correspondent aux critères, comme les artistes, je pourrais utiliser une clause Where:

        
SELECT * FROM albums WHERE artist LIKE '%pink floyd%';

Les instructions SQLITE Like correspondent en partie à un champ, et ils sont insensibles aux cas sur SQLite.

Oups, j'ai besoin de plus de champs!

Même aussi soigneusement que vous concevez des champs dans une base de données, il semble que vous deviez ajuster les tables lorsque vous réalisez que vous avez besoin d'un autre champ. J'ai réalisé qu'il serait bien d'avoir un champ pour la maison de disques. Heureusement, il était facile de changer ma table dans SQLite.

Pour voir comment les données sont structurées, j'utilise la commande .schema.

J'ai ouvert le client en ligne de commande et tapé;

        ALTER TABLE albums ADD label;
    

J'aurais également pu le faire facilement via le navigateur DB. Je clique simplement sur la table des albums dans l'onglet « Structure de la base de données » et cliquez sur la fonction « Modifier la table ». Je peux ajouter ou supprimer des lignes, ainsi que la sélection des types comme contrainte. Lorsque j'entre dans l'année de sortie dans DB Browser, j'ai remarqué que cela ne trierait pas l'année de sortie correctement pour les entrées que j'ai ajoutées. J'ai dit explicitement à SQLite que l'année de sortie était un nombre via le menu en sélectionnant l'option « entier », et cela semblait résoudre le problème.

Il est possible d'ajouter l'étiquette aux albums déjà entrés avec une commande de mise à jour comme celle-ci:

        
UPDATE albums SET label = 'Factory' WHERE artist = 'Joy Division';

Pour les mises à jour simples, l'utilisation du navigateur DB peut être meilleure car vous pouvez modifier directement les entrées et il utilise automatiquement les transactions pour la sécurité. C'était aussi l'occasion de créer une vue. Une vue est similaire à une recherche enregistrée. Cela vous permet d'économiser des requêtes compliquées que vous faites fréquemment.

J'en ai créé un pour mes albums en vinyle:

        CREATE VIEW vinyl AS SELECT * FROM albums WHERE format = "LP";

Pour revenir à mon point de vue, j'exécute simplement cette requête comme si la vue était une autre table:

        
SELECT * FROM vinyl;

Maintenant, je peux continuer à ajouter et à examiner ma collection de musique, et Sqlite l'a rendu possible.

En rapport

Comment j'ai utilisé des codes QR et des feuilles Google pour organiser ma maison

Arrêtez de chercher sans but des choses que vous savez.

★★★★★