вторник, 31 августа 2021 г.

gpedit.msc для "Windows 10 Home Edition"

bat-файл:

@echo on

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt

dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt

for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

pause

Запустить с привилегиями администратора.

 Источник.

понедельник, 16 августа 2021 г.

Python: последовательное подключение к СУБД Oracle, затем PostgreSQL

 Попытка подключения сначала к СУБД Oracle, а затем к PostgreSQL в таком виде:

import jaydebeapi

...

jaydebeapi.connect('oracle.jdbc.driver.OracleDriver', ora_url, [db_username, ora_password], './ojdbc6.jar')

jaydebeapi.connect('org.postgresql.Driver', pg_url, [pg_user, pg_password], './postgresql-42.2.1.jar')

приводит к ошибке:

TypeError: Class org.postgresql.Driver is not found


Решение: предварительно загрузить JDBC-драйвер СУБД PosgreSQL в экземпляр JVM - см. строку "jpype.startJVM(... classpath=...":

import jaydebeapi

import jpype

...

jHome = jpype.getDefaultJVMPath()

jpype.startJVM(jHome, classpath=['./ojdbc6.jar','./postgresql-42.2.1.jar'])


jaydebeapi.connect('oracle.jdbc.driver.OracleDriver', ora_url, [db_username, ora_password], './ojdbc6.jar')

jaydebeapi.connect('org.postgresql.Driver', pg_url, [pg_user, pg_password], './postgresql-42.2.1.jar')


jpype.shutdownJVM()

вторник, 27 июля 2021 г.

pip

 Вместо "pip install ..." можно использовать "python -m pip install ...".

Полезно, когда работаешь на "чужом" сервере и не знаешь, куда установлена (и установлена ли) утилита "pip".

пятница, 29 января 2021 г.

Подключение к Firebird 3.0 с помощью Python 3

Описание проблемы:

Выполнение python-кода:

import fdb

con = fdb.connect(dsn='127.0.0.1/3050:base.fdb', user='SYSDBA', password='masterkey', charset='WIN1251')

прерывается ошибкой:

Traceback (most recent call last):

  File "try.py", line 4, in <module>

    con = fdb.connect(dsn='127.0.0.1/3050:base.fdb', user='SYSDBA', password='masterkey')

  File "C:\python38-32\\lib\site-packages\fdb\fbcore.py", line 800, in connect

    load_api(fb_library_name)

  File "C:\python38-32\\lib\site-packages\fdb\fbcore.py", line 231, in load_api

    setattr(sys.modules[__name__], 'api', ibase.fbclient_API(fb_library_name))

  File "C:\python38-32\\lib\site-packages\fdb\ibase.py", line 1385, in __init__

    raise Exception("The location of Firebird Client Library could not be determined.")

Exception: The location of Firebird Client Library could not be determined.


Решение:

Создаем строковый параметр, который указан в строках немногим выше той, что указана в этой строке стека ошибки:

File "C:\python38-32\\lib\site-packages\fdb\ibase.py", line 1385, in __init__

например, "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Firebird Project\Firebird Server\Instances\DefaultInstance" с путем до программной папки Firebird, например, "C:\firebird\3.0.6.33328-0_x64\".

Создаем папку "C:\firebird\3.0.6.33328-0_x64\bin\".

Копируем туда "C:\firebird\3.0.6.33328-0_x64\bin\fbclient.dll" разрядности "x32".

Архив