I'm writing a utility which I intend to be useable with at least three different database server backends (SQLite3, PostgreSQL, and MySQL). I'm not using an ORM (though I try a fork using SQLAlchemy after I've finished my prototype and become sufficiently comfortable with how to maintain the schema for possible access by other tools, potentially from other languages in the future).
I'm posting this in the spirit of StackOverflow's policy regarding answering one's own questions and opening the question and answer up for discussion.
The code posted in the answer below has been tested against all three supported targets pre-configured with a very simple subset of my intended schema (hard-code near the top of the script). It's currently only checking that each table has all of the required columns and only warning if extra columns exist. I'm NOT checking for types nor other constraints on the columns contents.
(My utility should allow the end-users to add additional columns, so long as they allow NULL values or code to supply suitable default values --- as my code will only be inserting or updating the subsets of the columns that I'm specifying).
Please let me know if there are better ways to accomplish this or if I've made some egregious error that isn't revealed in my tests.
(I'd like to know how to properly create SQLFiddle entries/links that could be shared to make this question easier to work with. Any pointers on that would be welcome, I've tried creating this one here for my MySQL schema ... let's see if that works).