Ваш подзапрос в существующем является некоррелированным подзапросом, что означает, что он не зависит от значения в записи при обновлении.
Вместо этого используйте
update EW_POLYLINE
set stan_zmiany = 3
where EW_POLYLINE.STAN_ZMIANY = 0
and NOT EXISTS (
SELECT 1
FROM EW_OBIEKTY
INNER JOIN EW_OB_ELEMENTY
ON EW_OBIEKTY.UID = EW_OB_ELEMENTY.UIDO
WHERE EW_OBIEKTY.STATUS = 0 AND EW_OB_ELEMENTY.TYP <> 1
AND EW_OB_ELEMENTY.IDE = EW_POLYLINE.ID
)
Обратите внимание на использование not exists
вместо exists
, потому что вы действительно хотите обновить записи из EW_POLYLINE
, которые не соответствуют этому требованию.
Таким образом, вам не нужно левое соединение в подзапросе, а условие EW_POLYLINE.ID = EW_OB_ELEMENTY.IDE
делает подзапрос, связанный с внешним оператором обновления.
Также обратите внимание, что это имеет аналогичную форму, как оператор select в последнем решении I приведенный в мой ответ на ваш предыдущий вопрос .
Используйте Javascript:
OpenSameTab = '<script language="JavaScript" type="text/JavaScript">window.location = \'%s\';</script>'
, а затем
print OpenSameTab % 'file.py'
Насколько я понимаю, если вы используете webbrowser.open(<url>)
, невозможно избежать получения новой вкладки каждый раз; с помощью веб-браузера можно убедиться, что он открывается в том же окне браузера, но не на той же вкладке. Чтобы настроить таргетинг на одно и то же окно, вам необходимо установить new=0
, например:
webbrowser.open('http://Sonoff_IP/cm?cmnd=POWER%20TOGGLE', 0);
. Однако, если вы можете открыть ссылку, используя библиотеку selenium
, это возможно.
Прочитайте документы для selenium
и webdriver
здесь: https://selenium-python.readthedocs.io/api.html
Основная проблема с Делая это с помощью Selenium, я думаю, вы теряете возможность нацеливаться на веб-браузер пользователя по умолчанию, и по умолчанию Selenium, по-видимому, использует Firefox по умолчанию, поскольку облегченный порт Firefox включен в саму библиотеку Selenium.
Пример открытия ссылки в Selenium будет выглядеть следующим образом:
from selenium import webdriver
link1="https://www.google.com"
link2="https://www.youtube.com/"
driver=webdriver.Firefox()
driver.get(link1)
driver.get(link2)
Selenium поддерживает множество различных браузеров, так что если вы можете получить веб-браузер пользователя по умолчанию из webbrowser
модуль или каким-либо другим способом, вы сможете использовать эту информацию, чтобы открыть URL-адреса на той же вкладке с браузером пользователя по умолчанию.
Надеюсь, это поможет и удачи! :)