subprocess.Popen
создает процесс и открывает трубы и прочее. То, что вы делаете:
sudo -S
mypass
mount -t vboxsf myfolder /home/myuser/myfolder
что явно не сработает. Вам нужно передать аргументы Попену. Если вы посмотрите на его документацию , вы заметите, что первый аргумент на самом деле является списком аргументов.
Ответ Мохаммеда охватывает n-уровневую часть вашего вопроса. Часть о том, чтобы быть похожей на i.batis или hibernate, подталкивает вас к объектно-ориентированным фреймворкам персистентности, таким как tiOPF, которые являются чем-то вроде другого зверя.
Вот список фреймворков персистентности для Delphi, о которых я знаю в настоящее время . Я считаю, что CG также представила своего рода демонстрацию устойчивости в Delphi Live, так что может быть что-то еще на горизонте.
FWIW - Я использовал InstantObjects (IO) в нескольких коммерческих продуктах (хотя и нестандартным способом) и работаю над переносом на Delphi 2009. PressObjects принадлежит одному из разработчиков IO, и я недавно присоединился к этому проекту, так как он выглядит интересным. Я бы не стал сбрасывать со счетов такие фреймворки, как tiOPF, Jazz и т.д., начиная с YMMV.
Если вы хотите создавать решения Delphi n-Tiers с доступом из разных клиентов (не Delphi), у вас есть следующие варианты:
В моей компании мы используем структуру tiOPF для достижения этой цели. Он использует несколько шаблонов для отделения графического интерфейса от объектной модели. Он включает уровень базы данных для подключения практически к любой базе данных или текстовому файлу.
Для связи элементов управления, не поддерживающих данные, с моделью, доступно несколько посредников. Имея некоторый опыт, вы можете написать своих собственных посредников. Мы написали несколько посредников для связи, например, с элементами управления DevExpress.
Документация концепций, лежащих в основе фреймворка, хороша. По всем остальным вопросам существует группа новостей, которую часто посещают все основные разработчики.
Взгляните на сайт tiOPF !