如何使用 FDB 在 Python 脚本中恢复 Firebird 数据库?
How to restore a Firebird database in a Python script using FDB?
在 Windows10 64 位系统上安装了 Firebird 3.0.4 和 Python v3.7.7。
我可以使用以下命令恢复数据库:
gbak.exe -r -USER user -PASSWORD password database.fdk database.fdb
我想在 Python 脚本中使用 fdb (Firebird Embedded) 做同样的事情,但它不起作用!
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(主机='localhost', 用户='user', 密码='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()
数据库错误: ('Services/isc_service_attach:\n- SQLCODE: -902\n- Unable to complete network request to host "localhost".\n- Failed to establish a connection.', -902, 335544721)
假设您想使用 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)
即显式加载与 Firebird embedded 关联的 fbclient.dll
(另见 ),不要在 fdb.services.connect
中指定主机名,因此它将使用 Firebird Embedded 服务经理而不是尝试连接到本地主机 Firebird 服务器(在您的情况下不是 运行)。
除了我用来报告进度的回调,您还可以使用readlines()
或wait()
方法。
在 Windows10 64 位系统上安装了 Firebird 3.0.4 和 Python v3.7.7。
我可以使用以下命令恢复数据库:
gbak.exe -r -USER user -PASSWORD password database.fdk database.fdb
我想在 Python 脚本中使用 fdb (Firebird Embedded) 做同样的事情,但它不起作用!
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(主机='localhost', 用户='user', 密码='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()
数据库错误: ('Services/isc_service_attach:\n- SQLCODE: -902\n- Unable to complete network request to host "localhost".\n- Failed to establish a connection.', -902, 335544721)
假设您想使用 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)
即显式加载与 Firebird embedded 关联的 fbclient.dll
(另见 fdb.services.connect
中指定主机名,因此它将使用 Firebird Embedded 服务经理而不是尝试连接到本地主机 Firebird 服务器(在您的情况下不是 运行)。
除了我用来报告进度的回调,您还可以使用readlines()
或wait()
方法。