Не смущайтесь вашими требованиями.Один размер не подходит для всех.
загружает большие объемы данных относительно быстро
Почему бы не использовать для этого встроенные загрузчики баз данных?Используйте Python для подготовки файлов, но используйте инструменты базы данных для загрузки.Вы обнаружите, что это удивительно быстро.
быстро и легко обновлять / вставлять небольшие объемы данных
Это начинает нарушать правила хранилища данных.Если вы не говорите об управлении основными данными для обновления атрибутов отчетов в измерении.
Для этого предназначены ORM и веб-инфраструктуры.
легко обрабатывает большое количество строк (300 записейв минуту в течение 5 лет)
Опять же, именно поэтому вы используете конвейер обработки внешнего интерфейса Python, но фактические INSERT выполняются инструментами базы данных.Не питон.
легко изменять схему (вместе с интерфейсом python), для будущих требований
У вас почти нет необходимости автоматизировать это.Это, безусловно, ваша самая низкая приоритетная задача для "программирования".Вы часто будете делать это вручную для правильного сохранения данных.
Кстати, «ручные запросы, построенные с помощью обработки строк», вероятно, самая большая ошибка за всю историю.Это сложно обрабатывать анализатору СУБД - они работают медленнее, чем запросы, в которые вставлены переменные связывания.