Можете да направите нещо много по-просто, което ще бъде и значително по-бързо. Имайте предвид, че този подход работи само когато сте в състояние да съхранявате цялото съдържание на файла в непрекъсната памет и текущото ограничение е 1 GB, дори ако имате много терабайта RAM на разположение!
cursor.execute("insert into t (id, b) values (:my_id, :my_blob)",
(1, mem_file.getvalue())
Вмъкването на празна_blob() стойност и връщането на LOB локатора за по-късна актуализация е по-бързо от създаването на временен LOB и вмъкването му (както правите във вашия код), но директното вмъкване на данните е още по-бързо!