пятница, 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".

Архив