簡體   English   中英

使用 Python SQLmodel 庫連接到無服務器 cockroachdb 時缺少集群標識符錯誤

[英]Missing cluster identifier Error when connecting to serverless cockroachdb using the Python SQLmodel library

我有一個 python 應用程序,它使用 SQLmodel 庫作為 ORM 包裝器。 在用 sqlite3 成功創建數據庫和多個表后,我喜歡切換到 cockroach db。 因此,我更改了 create_engine 命令中的連接字符串。 我在這里按照有關如何連接到蟑螂數據庫的說明 - https://www.cockroachlabs.com/docs/v22.2/connect-to-the-database.html?filters=python&filters=sqlalchemy

我的理解是 SQLmodel 完全支持 SQLAlchemy 個連接。

但是當我運行 create_engine 命令時..

engine = create_engine(os.environ["DB_CONNECTION"], echo=True)

我收到以下錯誤:

Exception has occurred: OperationalError
(psycopg2.OperationalError) FATAL:  codeParamsRoutingFailed: missing cluster identifier

(Background on this error at: https://sqlalche.me/e/14/e3q8)
psycopg2.OperationalError: FATAL:  codeParamsRoutingFailed: missing cluster identifier


The above exception was the direct cause of the following exception:

  File "/workspace/app/main.py", line 8, in <module>
    SQLModel.metadata.create_all(engine)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL:  codeParamsRoutingFailed: missing cluster identifier

(Background on this error at: https://sqlalche.me/e/14/e3q8)

環境變量在VSCode devcontainer.json文件中設置

"containerEnv": {
"DB_CONNECTION": "cockroachdb://wg:<removed-password>@cheeky-panther-6202.8nj.cockroachlabs.cloud:26257/wartgeld?sslmode=verify-full"
}

我按照指示下載了證書。

curl --create-dirs -o $HOME/.postgresql/root.crt -O https://cockroachlabs.cloud/clusters/47771648-29f6-4b5d-b684-aeb905732cd7/cert

至於包我已經根據這個說明安裝了所需的包 - https://github.com/cockroachdb/sqlalchemy-cockroachdb

...
psycopg2-binary        2.9.5
pydantic               1.10.2
PyYAML                 6.0
requests               2.28.1
setuptools             65.5.0
SQLAlchemy             1.4.41
sqlalchemy-cockroachdb 1.4.4
sqlalchemy2-stubs      0.0.2a29
sqlmodel               0.0.8
typing_extensions      4.4.0
urllib3                1.26.13
uvicorn                0.20.0
wheel                  0.38.4

我現在不確定連接字符串是否正確,盡管我直接從 cockroachdb 管理界面復制粘貼了它。

集群標識符可以在參數(主機)下找到。

YOUR-IDENTIFIER-521 .h4f.cockroachlabs.cloud

YOUR-IDENTIFIER-521 是您的集群標識符。

在連接字符串中,這必須在數據庫名稱之前使用,例如 YOUR-IDENTIFIER-521.dbname。

暫無
暫無

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

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