【发布时间】:2022-03-18 11:52:19
【问题描述】:
我有以下代码:
import sqlalchemy
import testing.postgresql
from sqlalchemy.ext.declarative import declarative_base
from app.config import Settings, mode
from databases import Database
from sqlalchemy import (
create_engine
)
def get_database():
if mode == 'prod':
settings = Settings()
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)
Base = declarative_base()
database = Database(str(engine.url))
return engine, Base, database
else:
with testing.postgresql.Postgresql() as postgresql:
engine = create_engine(postgresql.url())
Base = declarative_base()
database = Database(str(engine.url))
return engine, Base, database
engine, Base, database = get_database()
我的代码在mode == 'prod' 时运行完美,但在mode == 'test' 时,我收到此错误:
venv\lib\site-packages\testing\postgresql.py:144: in find_program
raise RuntimeError("command not found: %s" % name)
E RuntimeError: command not found: initdb
我可以说进度已安装并运行,C:\Program Files\PostgreSQL\13\bin 在PATH 中。
我找不到我可能缺少的东西。
【问题讨论】:
标签: python-3.x postgresql sqlalchemy