Этот следующий синтаксис работает для меня.
UPDATE
(SELECT A.utl_id,
b.utl1_id
FROM trb_pi_joint A
JOIN trb_tpr B
ON A.tp_id=B.tp_id Where A.pij_type=2 and a.utl_id is null
)
SET utl_id=utl1_id;
Это ответ на ваш вопрос? Второй импорт делает трюк.
Mod_1.py
def test_function():
print "Test Function -- Mod 1"
Mod_2.py
def test_function():
print "Test Function -- Mod 2"
Test. py
#!/usr/bin/python
import sys
import Mod_1
Mod_1.test_function()
del sys.modules['Mod_1']
sys.modules['Mod_1'] = __import__('Mod_2')
import Mod_1
Mod_1.test_function()
Очень странный подход - эмулировать язык низкого уровня языком высокого уровня. Если первый простой способ не работает, может быть, это неправильная цель?
BTW, препроцессор C просто работает с текстовыми файлами и набором переменных препроцессора, а не с высокоуровневыми загружаемыми/выгружаемыми модулями.
Чтобы определить другое поведение импорта или полностью подорвать процесс импорта, вам нужно будет написать перехватчики импорта. См. PEP 302 .
Например,
import sys
class MyImporter(object):
def find_module(self, module_name, package_path):
# Return a loader
return self
def load_module(self, module_name):
# Return a module
return self
sys.meta_path.append(MyImporter())
import now_you_can_import_any_name
print now_you_can_import_any_name
Он выводит:
<__main__.MyImporter object at 0x009F85F0>
По сути, он возвращает новый модуль (который может быть любым объектом), в данном случае сам. Вы можете использовать его для изменения поведения импорта, возвращая processse_xxx
при импорте xxx
.
IMO: Python не требует препроцессора. Все, что вы делаете, может быть выполнено в самом Python из-за его очень динамичной природы, например, в случае примера отладки, что плохого в том, чтобы иметь верхнюю часть файла
debug = 1
и позже
if debug:
print "wow"
?
В Python 2 есть модуль imputil
, который, кажется, обеспечивает нужную вам функциональность, но был удален в python 3. Он не очень хорошо документирован, но содержит пример раздела, в котором показано, как можно заменить стандартные функции импорта.
Для Python 3 существует модуль importlib
(представленный в Python 3.1), который содержит функции и классы для изменения функциональности импорта всеми видами способов. Должно быть удобно подключить препроцессор к системе импорта.