Условное обновление поля из другого поля в той же записи

Рассмотрите возможность использования многоступенчатой ​​сборки . Используйте первый этап для создания всех необходимых зависимостей и второго этапа для создания окончательного изображения Docker. Просто скопируйте сгенерированные сайты-пакеты (и другие артефакты, если необходимо) со стадии сборки на второй.

Итак, ваш файл Docker может выглядеть так (обратите внимание на два оператора FROM):

# Build stage:
FROM python:3.6-alpine as build
COPY . /app
WORKDIR /app

RUN apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev

RUN pip install pipenv
RUN pipenv install --system --deploy

# "Default" stage:
FROM python:3.6-alpine

# Copy generated site-packages from former stage:
COPY --from=build /usr/local/lib/python3.6/site-packages/ /usr/local/lib/python3.6/site-packages/

COPY . /app
WORKDIR /app

EXPOSE 5005

ENV FLASK_APP=app/__init__.py
ENV FLASK_RUN_PORT=5005

CMD flask run --host=0.0.0.0

0
задан Sami Al-Subhi 19 January 2019 в 19:07
поделиться

1 ответ

  • <expr> = NULL никогда не соответствует действительности, даже если <expr> равно NULL. Чтобы проверить, что для NULL, используйте IS NULL: <expr> IS NULL.
  • Но вам даже не нужно if() здесь. Существует специальная функция coalesce(), которая возвращает первое ненулевое выражение из списка его аргументов.
  • Не используйте двойные кавычки для заключения строковых литералов. Хотя MySQL допускает, что в целом это может привести к нежелательным результатам, так как двойные кавычки в SQL фактически предназначены для включения идентификаторов (например, имен столбцов). Поэтому лучше всегда использовать одинарные кавычки вокруг строковых литералов.
  • И идентификаторы (имена столбцов) с пробелами в них возможны, но тоже не лучшая идея. Если вы хотите избавить вас от возможных неприятностей, не используйте их.


UPDATE `tracking`
       SET `design date` = '2019-01-19',
           `design date original` = coalesce(`design date original`,
                                             `start_date`) 
       WHERE `ID` = 20212;
0
ответ дан sticky bit 19 January 2019 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: