Yep.

Except with a LOT of input().

The bash script as I have it now first asks the user for the .sqlite path — defaulting to ./tasting-notes.sqlite — and then asks which set of tables should be updated (e.g. input w updates "wines" and "wine_notes").

Then there's user input for every column (each column is a variable, obviously), defaulting to null.

Then all these variables are used in something like

sqlite3 "$DB_FILE" << EOF
INSERT INTO wines VALUES (null, '$WINEdate', '$WINEformat', '$WINEtype', '$WINEvineyard', '$WINEyear', '$WINEregion', '$WINEname', '$WINEgrape1', '$WINEgrape2', '$WINEgrape3');
INSERT INTO winenotes VALUES (null, LASTINSERTROWID(), '$WINENOTES_notesdate', '$WINENOTES_nose', '$WINENOTEStaste', '$WINENOTESratingof10', '$WINENOTESrating_justification', '$WINENOTESother_notes');
EOF

(Still working on auto-escaping single quotes, but it seems the ? format in Python makes that easier — one of many reasons to switch.)

The number of ifs is chaotic, because I have 7 sets of tables (14 tables in total).