Когда вы связываете свою службу БД с веб-службой в Docker, вы должны использовать имя вашей службы БД вместо ip сервера базы данных для подключения базы данных:
db:
image: mysql
restart: unless-stopped
container_name: db_of_my_project
web:
build: .
container_name: django01
command: ...
links:
- db
volumes:
- ./project:/src
expose:
- "8000"
restart: always
и конфигурацию вашей базы данных:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'ProjetDjango',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'db', # database container name
'PORT': '',
}
}
Ну, существуют отдельные реализации для отдельных операционных систем. Это означает, что, если логика для извлечения расширения файла расходится в Mac от этого на Linux, это различие будет обработано теми вещами. Я не знаю ни о каком подобном различии, таким образом, не могло бы быть ни одного.
<час> Редактирование : @Brian комментирует, что пример как /directory.ext/file
, конечно, не работал бы с простым .split('.')
вызов, и необходимо будет знать оба, что каталоги могут использовать расширения, а также то, что в некоторых операционных системах, наклонная черта вправо является допустимым разделителем каталога.
Это просто подчеркивает эти , используют библиотечную подпрограмму, если у Вас нет серьезного основания не к часть моего ответа.
Спасибо @Brian.
<час>Кроме того, где файл не имеет расширения, необходимо было бы создать в логике для обработки того случая. И что, если вещь Вы пытаетесь разделить имя каталога, заканчивается обратной косой чертой? Никакое имя файла, ни расширение.
правило должно состоять в том, что, если у Вас нет определенной причины не использовать библиотечную функцию, которая делает то, что Вы хотите, используйте его. Это избежит Вас имеющий необходимость поддержать, и у других кода bugfix есть совершенно хорошие решения.
splitext()
делает обратный поиск '.' и возвращает дополнительную часть, как только она находит его. split('.')
сделает вперед поиск всех '.' символов и поэтому почти всегда медленнее. Другими словами splitext()
конкретно записан для возврата расширения, в отличие от этого split()
.
(см. posixpath.py в источнике Python, если Вы хотите исследовать реализацию).
os.path.splitext правильно обработает ситуацию, где файл не имеет никакого расширения, и возвратите пустую строку. .split возвратит название файла.
Там существуйте операционные системы, которые не используют †. ’ как дополнительный разделитель.
(В частности, RISC ОС условно использует †/’, с тех пор †. ’ используется там в качестве разделителя пути.)
Ясно определенный и зарегистрированный метод для получения расширения файла всегда предпочитался бы по разделению строки волей-неволей, потому что тот метод будет более хрупким по различным причинам.
Редактирование: Это не конкретный язык.
Первое и наиболее заметное отличие - то, что вызов разделения не имеет никакой логики в нем для установки по умолчанию, когда нет никакого расширения.
Это может также быть выполнено regex, чтобы заставить его вести себя, поскольку 1 лайнер без дополнительного включает, но все еще возвратитесь, пустая строка, если расширение не там.
кроме того, библиотека пути может обработать различные контексты для путей, имеющих различные разделители для папок.
, единственной причиной волноваться об импорте модуля является беспокойство об издержках - это вряд ли будет беспокойством в подавляющем большинстве случаев, и если это настолько трудно затем, это - вероятные другие издержки в Python, будет большая проблема перед этим.
В комментарии к ответу, который предоставил это решение:
, "Если файл не имеет никакого расширения, это неправильно возвращает имя файла вместо пустой строки".
Не каждый файл имеет расширение.
Помимо того, чтобы быть стандартным и поэтому гарантируемым быть доступным, os.path.splitext
:
пограничные случаи Дескрипторов - как этот недостающего расширения.
гарантии Предложений - Помимо корректного возврата расширения, если Вы существуете, это гарантирует, что root
+ ext
будет всегда возвращать полный путь.
межплатформенный - в источнике Python существует на самом деле три других версии os.path, и их называют, на основе которой операционной системы Python думает, что Вы идете.
, больше читаемое - полагает, что Ваша версия требует, чтобы пользователи знали, что массивы могут быть индексированы с отрицательными числами.
btw, это не должно быть немного быстрее.
1) простое разделение ('. '), [-1] не будет работать правильно на путь как C:\foo.bar\Makefile so you need to extract basename first with os.path.basename (), и даже в этом случае он не разделит файл без расширения правильно. os.path.splitext делают это под капотом.
2) Несмотря на факт os.path.splitext является межплатформенным решением, это не идеально. Позвольте нам смотрящий на специальные файлы с продвижением точки, например, .cvsignore, .bzrignore, .hgignore (они очень популярны в некотором VCS как специальные файлы). os.path.splitext возвратит все имя файла как расширение, хотя это не делает кажется правильным для меня. Поскольку на это имя случая без расширения пустая строка. Хотя это - предназначенное поведение библиотеки стандарта Python, это, может быть не то, что пользователь хочет на самом деле.