Запись строки подключения, когда пароль содержит специальные символы

Ответы здесь соответствуют до вопроса, но я собираюсь ответить на вопрос, который Вы не задавали. "Я должен использовать усеченный или удалить?" При удалении всех строк из таблицы Вы будете обычно хотеть усечь, так как это намного намного быстрее. Почему это намного быстрее? По крайней мере, в случае Oracle, это сбрасывает метка паводка . Это - в основном разыменование данных и позволяет дб снова использовать его для чего-то еще.

28
задан KeyboardInterrupt 14 September 2009 в 20:41
поделиться

1 ответ

Обратные косые черты не являются допустимыми escape-символами для строк компонентов URL. Вам нужно URL-кодировать часть пароля в строке подключения:

from urllib import quote_plus as urlquote
from sqlalchemy.engine import create_engine
engine = create_engine('postgres://user:%s@host/database' % urlquote('badpass'))

Если вы посмотрите на реализацию класса, используемого в SQLAlchemy для представления URL-адресов подключения к базе данных (в sqlalchemy / engine / url.py ) , вы можете видеть, что они используют тот же метод для экранирования паролей при преобразовании экземпляров URL в строки, и что код синтаксического анализа использует дополнительную функцию urllib.unquote_plus для извлечения пароля из строки подключения.

49
ответ дан 28 November 2019 в 03:17
поделиться
Другие вопросы по тегам:

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