Как восстановить базу данных Firebird в скрипте Python с помощью FDB? - PullRequest
1 голос
/ 19 июня 2020

Firebird 3.0.4 установлен и Python v3.7.7 в Windows10 64-битной системе.

Я могу восстановить базу данных с помощью следующей команды:

gbak.exe -r -USER user -PASSWORD password database.fdk database.fdb

Я хотел бы сделать то же самое, используя fdb (Firebird Embedded) в сценарии Python, но он не работает!

conn = fdb.services.connect(host='localhost', user='user', password='password', fb_library_name=API)
conn.restore(database.fbk, database.fdb)
restore_report = conn.readlines()

----> 1 conn = fdb.services.connect (host = 'localhost', user = 'user', password = 'password', fb_library_name = API)
2 conn.restore (database.fbk, database.fdb)
3 restore_report = con.readlines ()
4 restore_report

TypeError: connect () получил неожиданный аргумент ключевого слова 'fb_library_name'

conn = fdb.services.connect(host='localhost', user='user', password='password')
conn.restore(database.fbk, database.fdb)
restore_report = conn.readlines()

DatabaseError: ('Services / isc_service_attach: \ n- SQLCODE: -902 \ n- Невозможно полный сетевой запрос к хосту "localhost". \ n- Не удалось установить sh соединение. ', -902, 335544721)

1 Ответ

1 голос
/ 20 июня 2020

Предполагая, что вы хотите использовать Firebird Embedded (судя по вашему предыдущему вопросу), у меня работает следующее:

import fdb

fdb.load_api('C:/Program Files/Firebird/Firebird-3.0.5.33220-0_x64/fbclient.dll')

def report_progress(line):
    print(line)

svc = fdb.services.connect(user='sysdba', password='masterkey')
svc.restore('c:/db/somedatabase.fbk', 'c:/db/somedatabase.fdb', callback=report_progress)

То есть явно загрузить fbclient.dll, связанный со встроенным Firebird (см. Также * ( который не работает в вашем случае).

Вместо обратного вызова, который я использую для отчета о прогрессе, вы также можете использовать методы readlines() или wait().

...