簡體   English   中英

Python連接到firebird docker數據庫

[英]Python connect to firebird docker database

我有一個mydb.fdb文件,如何將其加載到docker容器中,然后從python連接到它。 我在docker-compose中執行以下操作:

version: '2'

services:
  firebird:
    image: jacobalberty/firebird
    environment:
      ISC_PASSWORD: pass
    volumes:
      - ./database:/databases

然后我做:

docker exec -it <container-id> bin/bash

我在容器中的/databases文件夾中看到我的.fdb文件,但是當我在容器內執行命令時:

cd /usr/local/firebird/bin
./isql
SQL> CONNECT "/databases/mydb.FDB" user sysdba password masterkey;

我收到了:

服務器配置不允許在位置/databases/mydb.FDB使用數據庫

而且我也不明白如何通過fdb python模塊連接到這個數據庫。 我做:

import fdb

con = fdb.connect(
    host='0.0.0.0',
    port='3050', 
    database='mydb.FDB',
    user='sysdba', 
    password='masterkey')

並收到:

提升異常(“無法確定Firebird客戶端庫的位置。”)

您的問題中有兩個不同的問題,將來請務必將它們作為單獨的問題提出。

至於您的第一個問題,默認情況下Firebird泊塢窗映像的設置需要位置/firebird/data ,並明確配置Firebird以限制僅訪問該位置。 如果要使用其他位置,則必須將環境變量DBPATH設置為正確的路徑。 另請參見問題12Dockerfile和圖像的build.sh 此選項似乎沒有記錄; 我對那張票留了評論。

至於你的第二個問題,它有兩個部分。 一,你不能使用0.0.0.0來連接,這只是“這個主機的所有IP地址”的簡寫,它只能在監聽連接時使用,而不能在連接時使用。 從運行docker的機器連接時,您將需要使用127.0.0.1或localhost。

最重要的是,該錯誤表明您沒有安裝Firebird本機客戶端。 FDB驅動程序需要fbclient.dll (Windows)或libfbclients.so (Linux)。 您需要安裝Firebird本機客戶端,或者切換到pythonbirdsql ,它是純Python中的Firebird驅動程序(它在Python中實現Firebird協議)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM