summaryrefslogtreecommitdiff
path: root/rust/scripts/populate/database.py
diff options
context:
space:
mode:
Diffstat (limited to 'rust/scripts/populate/database.py')
-rw-r--r--rust/scripts/populate/database.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/rust/scripts/populate/database.py b/rust/scripts/populate/database.py
new file mode 100644
index 0000000..2319812
--- /dev/null
+++ b/rust/scripts/populate/database.py
@@ -0,0 +1,83 @@
+import mysql.connector
+import getpass
+
+
+def get_database_password():
+ return getpass.getpass("Insert database password: ")
+
+
+connector = mysql.connector.connect(
+ host="localhost",
+ user="balalaika_user",
+ password=get_database_password(),
+ database="balalaika",
+)
+
+cursor = connector.cursor()
+
+
+
+
+def process_albums(album_list):
+ [process_album(album, album_id)
+ for album_id, album in enumerate(album_list, 1)]
+
+
+def process_album(album, album_id):
+ upload_album(album)
+ [upload_song(song, album_id) for song in album.songs]
+
+
+def upload_album(album):
+ album.name = album.name.lower()
+ cursor.execute("""
+ INSERT INTO album (
+ name, cover, artist_id
+ )
+ VALUES (
+ %(name)s, %(cover)s, %(artist_id)s
+ );
+ """, {
+ 'name': album.name,
+ 'cover': album.cover,
+ 'artist_id': album.artist
+ })
+
+
+def upload_song(song, album_id):
+ cursor.execute("""
+ INSERT INTO song (
+ name, lyrics, album_id
+ )
+ VALUES (
+ %(name)s, %(lyrics)s, %(album_id)s
+ )
+ """, {
+ 'name': song.name,
+ 'lyrics': song.lyrics,
+ 'album_id': album_id
+ })
+
+
+def process_artists(artist_names):
+ [process_artist(artist) for artist in artist_names]
+
+
+def process_artist(artist):
+ artist = artist.lower()
+ cursor.execute("""
+ INSERT INTO artist (
+ name
+ )
+ VALUES (
+ %(name)s
+ )
+ """, {
+ 'name': artist,
+ })
+
+
+def close():
+ cursor.close()
+ connector.commit()
+ connector.close()