繁体   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