SQLAlchemy - psycopg2.errors.InvalidSchemaName:未选择在其中创建模式

问题描述 投票:0回答:1

我正在使用 kubernetes 将 FastAPI 和 SQLAlchemy 应用程序连接到 postgres 部署。

我指定我的连接字符串和架构如下:

DB_URL = f"postgresql+psycopg2://{POSTGRES_USER}:{POSTGRES_PASSWORD}@{DB}:5432/{DB_NAME}"

engine = create_engine(DB_URL, connect_args={"options":"csearch_path={}".format("schema_name")},)

但是,在应用程序启动时,我收到以下错误:

INFO:     Waiting for application startup.                                                                                                                                                                          │
│ ERROR:    Traceback (most recent call last):                                                                                                                                                                        │
│   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context                                                                                                  │
│     self.dialect.do_execute(                                                                                                                                                                                    │
│   File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 924, in do_execute                                                                                                          │
│     cursor.execute(statement, parameters)                                                                                                                                                                       │
│ psycopg2.errors.InvalidSchemaName: no schema has been selected to create in                                                                                                                                     │
│ LINE 2: CREATE TABLE field (     

我不明白为什么在指定架构时会看到此错误。

python postgresql sqlalchemy psycopg2
1个回答
0
投票

我认为您可能错过了 csearch_path 前面的

-
。 像这样的东西:

{"options":"-csearch_path={}".format("schema_name")}

代替:

{"options":"csearch_path={}".format("schema_name")}

您还可以通过元数据或每个表指定默认架构,这可能更方便。

© www.soinside.com 2019 - 2024. All rights reserved.