MySQL из командной строки - я могу практически использовать БЛОКИРОВКИ?

Используйте встроенное reversed() функция:

>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
...     print(i)
... 
baz
bar
foo

К также получают доступ к исходному индексу, используют enumerate() в Вашем списке прежде, чем передать его reversed():

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo

С тех пор enumerate() возвраты генератор и генераторы не могут быть инвертированы, необходимо преобразовать его в list сначала.

8
задан Rory 24 August 2009 в 20:50
поделиться

2 ответа

[РЕДАКТИРОВАТЬ]

номера имели основную идею - запустить "mysql" только один раз, и предоставленные номера решений должны работать, но при этом FIFO остается включенным. disk.

nos тоже был правильным, что я напортачил: простой " echo X> FIFO " закроет FIFO; Я неправильно вспомнил. И мои (удаленные) комментарии относительно времени не применяются, извините.

Тем не менее, вам не нужен FIFO, вы можете использовать межпроцессный конвейер. И просматривая мои старые сценарии MySQL, некоторые работали аналогично этому, но вы не можете разрешить никаким командам писать в стандартный вывод (без некоторых уловок с "exec").

#!/bin/bash
(
  echo "LOCK TABLES mytable READ ;"
  echo "Doing something..." >&2
  echo "describe mytable;" 
  sleep 5
  echo "UNLOCK  tables;" 
) | mysql ${ARGUMENTS}

Другой вариант - назначить дескриптор файла в FIFO, а затем запустить его в фоновом режиме. Это очень похоже на то, что сделали номера , но " внутри «прочего»). И это определенно нетривиально.

  • Поскольку в первом примере «другие вещи» находятся внутри подоболочки, вы не можете легко установить код возврата сценария из этого контекста.
  • 8
    ответ дан 5 December 2019 в 12:10
    поделиться

    Вот один способ, я уверен, что есть способ попроще ..

    mkfifo /tmp/mysql-pipe
    mysql mydb </tmp/mysql-pipe &
    (
      echo "LOCK TABLES mytable READ ;" 1>&6 
      echo "Doing something "
      echo "UNLOCK  tables;" 1>&6
    ) 6> /tmp/mysql-pipe
    
    4
    ответ дан 5 December 2019 в 12:10
    поделиться