如何使用FDB在Python脚本中恢复Firebird数据库?

2024-09-27 22:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

Firebird 3.0.4已安装,Python v3.7.7安装在Windows10 64位系统上

我可以使用以下命令还原数据库:

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(host='localhost',user='user',password='password',fb\u library\u name=API)
2连接还原(database.fbk,database.fdb)
3 restore_report=con.readlines()
4.报告

TypeError:connect()获得意外的关键字参数“fb\u library\u name”

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

数据库错误:('Services/isc\u service\u attach:\n-SQLCODE:-902\n-无法完成对主机“localhost”的网络请求。\n-无法建立连接。“,-90235544721)


Tags: namereportlocalhosthostfbconnectservicelibrary
1条回答
网友
1楼 · 发布于 2024-09-27 22:19:46

假设您想使用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(另请参见Firebird connection on a local database impossible within a Python script),不要在fdb.services.connect中指定主机名,这样它将使用Firebird embedded service manager,而不是尝试连接到本地主机Firebird服务器(在您的案例中未运行)

您也可以使用readlines()wait()方法来代替我用来报告进度的回调

相关问题 更多 >

    热门问题