Открыть оболочку базы данных из муравейной задачи?

Я работал над проектом Python/Django и только что обнаружил команду "./manage.py dbshell". Он читает ваш файл конфигурации для учетных данных базы данных и запускает оболочку базы данных для вас.

Под капотом Django используется функция Python os.execvp (http://docs.python.org/library/os.html#os.execvp). Я не смог найти в Java/Ant ничего подобного, но обнаружил, что вы можете перенаправить запущенный процесс на ваш TTY (mysql> tty), но попытка создать задачу для этого, похоже, не работает.

<target name="test">
    <exec executable="/bin/sh">
        <arg value="-c" />
        <arg value="mysql -u foo -pbar &gt; `tty`" />
    </exec>
</target>

Когда я запускаю эту задачу, я не получаю оболочку базы данных, и в текущем каталоге создается файл с именем "не tty".

У кого-нибудь есть другие идеи о том, как я могу запустить интерактивный процесс из муравья?

1 ответ

Не уверен, что вас ждет весь путь, но вот начало интерактивности:

<target name="get-inputs" depends="confirm-props">
    <input message="Enter your DB username:" addproperty="db.user.name" />
    <input message="Enter your DB password:" addproperty="db.user.password" />
    <input message="Enter DB Host:" addproperty="db.server" />
    ...call some other ant process...
</target>

И вот один для вызовов SQL:

<target name="db1">
    <sql
        driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://${db.server}:3306/?useUnicode=true&amp;characterEncoding=UTF-8"
        userid="name"
        password="password"
        classpathref="service.classpath"
    >
        <transaction>
            <![CDATA[
            insert into foo (field1) values ('${foo-value}');
            ]]>
        </transaction>
    </sql>
</target>
Другие вопросы по тегам