Используйте replace()
UPDATE table_name SET content = REPLACE(content, 'https://curious-api.example.pro', 'http://localhost')
Если Вы хотите использовать urllib и urlretrieve, подкласс urllib.URLopener
и используйте addheader()
метод для корректировки заголовков (т.е.: addheader('Accept', 'sound/basic')
, который я вытягиваю от docstring для urllib.addheader).
Для установки URLopener для использования urllib посмотрите пример в urllib. _ urlopener раздел документов (отмечают подчеркивание):
import urllib
class MyURLopener(urllib.URLopener):
pass # your override here, perhaps to __init__
urllib._urlopener = MyURLopener
Однако Вы будете рады услышать wrt Ваш комментарий к комментариям вопроса, читая пустую строку из read()
действительно сигнал остановиться. Это - то, как urlretrieve обрабатывает, когда остановиться, например. TCP/IP и сокеты абстрагируют процесс считывания, блокируясь ожидающий дополнительных данных, если соединение на другом конце не является EOF и закрытый, в этом случае читайте (), луг от соединения возвращает пустую строку. Пустая строка означает, что нет никаких данных, сочащихся в... Вы не должны волноваться о заказанной пакетной повторной сборке, поскольку это было все обработано для Вас. Если это - Ваше беспокойство о urllib2, я думаю, что можно безопасно использовать его.
Что плохого в написании собственной функции с помощью urllib2?
import os
import sys
import urllib2
def urlretrieve(urlfile, fpath):
chunk = 4096
f = open(fpath, "w")
while 1:
data = urlfile.read(chunk)
if not data:
print "done."
break
f.write(data)
print "Read %s bytes"%len(data)
и использовании объекта запроса для установки заголовков
request = urllib2.Request("http://www.google.com")
request.add_header('User-agent', 'Chrome XXX')
urlretrieve(urllib2.urlopen(request), "/tmp/del.html")