Currently SQLAlchemy detects the the SQL dialect of a database based on the version string of the DBMS. Newer DBMS can manage databases with older SQL dialects. Firebird can manage an older InterBase databases with SQL dialect 1 for example. In one of my assigned projects we have database with SQL dialect 1 and clients which depend upon this, but I can't execute DDL statements on the database because SQLAlchemy detects the dialect as 2 based on the Firebird version number. One can determine the SQL dialect of a database with isc_database_info and its respective Python wrappers more reliably. I can provide a patch that corrects the detection mechanism, if it gets accepted upstream.
Issue #2920 wontfix