У меня что-то подобное в рамках более крупного проекта, пока только для sqlite и postgres, но это можно обобщить.
Для начала, если вы ожидаете, что пользователь будет знать DATABASE_TYPE (например, MySQL, pgsql, sqlite или любой дБ, поддерживаемый SQLAlchemy), HOST, PORT, SCHEMA_NAME, USER_NAME и PASSWORD, вы можете просто попросить URL БД, чтобы сделать вашу жизнь немного проще
После этого вы можете проверить соединение по:
from sqlalchemy import create_engine
try:
engine = create_engine(url)
connection = engine.connect()
connection.close()
except Exception, e:
LOGGER.exception(e)
raise MyCusomException('Could not initialize db. Invalid URL.')
Cusom SQL-запросы могут быть выполнены с использованием конструкции text (), как показано здесь .