Right. The idea I was talking about I had seen in code which allowed different engines as backend. It uses Mysql in the default config, and could be switched to use a Postgres backend. So that idea is generally applicable. Good if you don't know what database will be used, or know that things have to be portable across several engines. __deep schema introspection__ Yes, sqlite has a few pragmas which help there to figure out tables, columns, indices, foreign keys, default values, etc. IIRC I have seen usage of these in the [Datasette](https://datasette.io/) (python) code.