【发布时间】:2021-09-27 22:22:30
【问题描述】:
我正在尝试创建一个 fastAPI 应用程序,该应用程序在运行时连接到 PostgreSQL 数据库,但在运行时连接到 testing.postgresql 数据库测试。这是我的连接代码:
import sqlalchemy
import testing.postgresql
from sqlalchemy.ext.declarative import declarative_base
from app.config import Settings
from databases import Database
from sqlalchemy import (
create_engine
)
settings = Settings()
if settings.DB_HOST == 'local':
with testing.postgresql.Postgresql() as postgresql:
engine = create_engine(postgresql.url())
else:
db_config = {
"drivername": "postgresql",
"host": settings.DB_HOST,
"username": settings.DB_USER,
"password": settings.DB_PASSWORD,
"port": settings.DB_PORT,
"database": settings.DB_DATABASE
}
uri = sqlalchemy.engine.url.URL(**db_config)
engine = create_engine(uri)
database = Database(str(engine.url))
问题是这段代码引发了这个异常:
app\db\session.py:13: in <module>
with testing.postgresql.Postgresql() as postgresql:
autostorevenv\lib\site-packages\testing\common\database.py:92: in __init__
self.initialize()
autostorevenv\lib\site-packages\testing\postgresql.py:50: in initialize
self.initdb = find_program('initdb', ['bin'])
autostorevenv\lib\site-packages\testing\postgresql.py:144: in find_program
raise RuntimeError("command not found: %s" % name)
E RuntimeError: command not found: initdb
我找到了一些类似的答案,但它们都发生在 Docker 容器中,这不是我的情况,所以这些答案对我的情况不利。
【问题讨论】:
-
请出示进口商品。
-
@jjanes 添加到问题正文中
标签: python postgresql testing sqlalchemy