Я выполнил ваш код на своем компьютере
file_put_contents("gitclone.bat", "git clone https://github.com/gutyina700/WPTG.git");
exec("gitclone.bat 2>&1",$o);
print_r($o);
, дополнительный код - проверка вывода из cmd, и он вернул «команду git not issists», поэтому вам нужно только добавить строку как
<?php
putenv("PATH=C:\Program Files\Git\cmd");
file_put_contents("gitclone.bat", "git clone https://github.com/gutyina700/WPTG.git");
exec("gitclone.bat 2>&1",$o);
print_r($o);
?>
Это работало правильно.
Я думаю, что SQLObject является большим количеством pythonic/simpler, поэтому если он работает на Вас, затем придерживайтесь его.
SQLAlchemy берет немного больше для изучения, но может сделать более усовершенствованные вещи при необходимости в этом.
Кроме того, Вы могли бы хотеть смотреть на эликсир, который является довольно толстой оберткой вокруг SQLAlchemy и действительно делает основные задачи легкими при сохранении питания SQLA.