Это сильно означает, что ваши данные НЕ НОРМАЛИЗИРОВАНЫ для начала. Вы действительно должны это исправить.
Somteh = такая вещь должна работать (NB вы не упомянули о том, что используете какие-либо другие языки, поэтому ее записывали как хранимую процедуру MySQL)
create procedure replace_all(find varchar(255),
replce varchar(255),
indb varcv=char(255))
DECLARE loopdone INTEGER DEFAULT 0;
DECLARE currtable varchar(100);
DECLARE alltables CURSOR FOR SELECT t.tablename, c.column_name
FROM information_schema.tables t,
information_schema.columns c
WHERE t.table_schema=indb
AND c.table_schema=indb
AND t.table_name=c.table_name;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET loopdone = 1;
OPEN alltables;
tableloop: LOOP
FETCH alltables INTO currtable, currcol;
IF (loopdone>0) THEN LEAVE LOOP;
END IF;
SET stmt=CONCAT('UPDATE ',
indb, '.', currtable, ' SET ',
currcol, ' = word_sub(\'', find,
'\','\'', replce, '\') WHERE ',
currcol, ' LIKE \'%', find, '%\'');
PREPARE s1 FROM stmt;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END LOOP;
END //
Я оставлю это вам, чтобы выяснить, как объявить функцию word_sub - я сделал достаточно свободного программирования здесь.
Можно изменить рабочий каталог с:
import os
os.chdir(path)
существует две лучших практики для следования при использовании этого метода:
Изменение текущего рабочего каталога в подпроцессе не изменяет текущий рабочий каталог в родительском процессе. Это верно для интерпретатора Python также. Вы не можете использовать os.chdir()
для изменения CWD обработки вызовов.
Я использовал бы os.chdir
как это:
os.chdir("/path/to/change/to")
Между прочим, если необходимо выяснить текущий путь, использование os.getcwd()
.
При использовании относительно новой версии Python можно также использовать менеджера по контексту, такой как этот :
from __future__ import with_statement
from grizzled.os import working_directory
with working_directory(path_to_directory):
# code in here occurs within the directory
# code here is in the original directory
ОБНОВЛЕНИЕ
, Если Вы предпочитаете самокрутке:
import os
from contextlib import contextmanager
@contextmanager
def working_directory(directory):
owd = os.getcwd()
try:
os.chdir(directory)
yield directory
finally:
os.chdir(owd)
и для легкого интерактивного использования, ipython имеет все общие встроенные команды оболочки.