Сейчас я работаю над проектом с использованием FastAPI и SQLModel. До сих пор все работало нормально, но вот уже несколько часов я получаю ту же ошибку:
Traceback (most recent call last):
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 445, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 1238, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 704, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 179, in _do_get
with util.safe_reraise():
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 177, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 386, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 668, in __init__
self.__connect()
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 881, in __connect
with util.safe_reraise():
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 877, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 641, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 604, in connect
return self.loaded_dbapi.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/psycopg/connection.py", line 119, in connect
raise last_ex.with_traceback(None)
psycopg.ProgrammingError: invalid connection option "plant"
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File ".../PlantSwap/test.py", line 18, in
init_db()
File ".../PlantSwap/test.py", line 9, in init_db
SQLModel.metadata.create_all(engine)
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/sql/schema.py", line 5868, in create_all
bind._run_ddl_visitor(
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3252, in _run_ddl_visitor
with self.begin() as conn:
File "/usr/lib/python3.11/contextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3242, in begin
with self.connect() as conn:
^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
return self._connection_cls(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 148, in __init__
Connection._handle_dbapi_exception_noconnection(
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2442, in _handle_dbapi_exception_noconnection
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 445, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 1238, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 704, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 179, in _do_get
with util.safe_reraise():
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 177, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 386, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 668, in __init__
self.__connect()
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 881, in __connect
with util.safe_reraise():
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 877, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 641, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 604, in connect
return self.loaded_dbapi.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../PlantSwap/.venv/lib/python3.11/site-packages/psycopg/connection.py", line 119, in connect
raise last_ex.with_traceback(None)
sqlalchemy.exc.ProgrammingError: (psycopg.ProgrammingError) invalid connection option "plant"
(Background on this error at: https://sqlalche.me/e/20/f405)
Интересно, что в конце написано «sqlalchemy.exc.ProgrammingError: (psycopg.ProgrammingError) неверный вариант подключения «завод»». Возможно, это как-то связано с тем, что мой проект вращается вокруг растений, и я изменил некоторые переменные среды. Однако, когда я попытался создать минимальный рабочий пример, произошла та же ошибка. Ниже приведен минимальный «рабочий» пример:
from sqlmodel import SQLModel, create_engine, Session
DATABASE_URL = "postgresql+psycopg://user:password@localhost/dbname"
engine = create_engine(DATABASE_URL)
def init_db():
SQLModel.metadata.create_all(engine)
def get_session():
with Session(engine) as session:
yield session
if __name__ == "__main__":
init_db()
with get_session() as session:
pass
Итак, теперь я думаю, что это должно быть как-то связано с базой данных (которую я вообще не менял - это экземпляр докера postgres. Я уже перезапустил его в прошлое использование скрипта и повторение этого ничего не меняет) или это как-то связано с какими-то переменными среды, о которых я не знаю.
Весь проект можно найти здесь, как видно, последнее завершенное действие GitHub успешно, и если я попытаюсь загрузить код проекта с GitHub и запустить его локально, произойдет та же ошибка.
Сейчас я работаю над проектом с использованием FastAPI и SQLModel. До сих пор все работало нормально, но вот уже несколько часов я получаю ту же ошибку: [code]Traceback (most recent call last): File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 146, in __init__ self._dbapi_connection = engine.raw_connection() ^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection return self.pool.connect() ^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 445, in connect return _ConnectionFairy._checkout(self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 1238, in _checkout fairy = _ConnectionRecord.checkout(pool) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 704, in checkout rec = pool._do_get() ^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 179, in _do_get with util.safe_reraise(): File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ raise exc_value.with_traceback(exc_tb) File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 177, in _do_get return self._create_connection() ^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 386, in _create_connection return _ConnectionRecord(self) ^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 668, in __init__ self.__connect() File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 881, in __connect with util.safe_reraise(): File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ raise exc_value.with_traceback(exc_tb) File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 877, in __connect self.dbapi_connection = connection = pool._invoke_creator(self) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 641, in connect return dialect.connect(*cargs, **cparams) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 604, in connect return self.loaded_dbapi.connect(*cargs, **cparams) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/psycopg/connection.py", line 119, in connect raise last_ex.with_traceback(None) psycopg.ProgrammingError: invalid connection option "plant"
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File ".../PlantSwap/test.py", line 18, in init_db() File ".../PlantSwap/test.py", line 9, in init_db SQLModel.metadata.create_all(engine) File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/sql/schema.py", line 5868, in create_all bind._run_ddl_visitor( File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3252, in _run_ddl_visitor with self.begin() as conn: File "/usr/lib/python3.11/contextlib.py", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3242, in begin with self.connect() as conn: ^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3278, in connect return self._connection_cls(self) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 148, in __init__ Connection._handle_dbapi_exception_noconnection( File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2442, in _handle_dbapi_exception_noconnection raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 146, in __init__ self._dbapi_connection = engine.raw_connection() ^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection return self.pool.connect() ^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 445, in connect return _ConnectionFairy._checkout(self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 1238, in _checkout fairy = _ConnectionRecord.checkout(pool) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 704, in checkout rec = pool._do_get() ^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 179, in _do_get with util.safe_reraise(): File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ raise exc_value.with_traceback(exc_tb) File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/impl.py", line 177, in _do_get return self._create_connection() ^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 386, in _create_connection return _ConnectionRecord(self) ^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 668, in __init__ self.__connect() File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 881, in __connect with util.safe_reraise(): File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ raise exc_value.with_traceback(exc_tb) File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/pool/base.py", line 877, in __connect self.dbapi_connection = connection = pool._invoke_creator(self) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 641, in connect return dialect.connect(*cargs, **cparams) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 604, in connect return self.loaded_dbapi.connect(*cargs, **cparams) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File ".../PlantSwap/.venv/lib/python3.11/site-packages/psycopg/connection.py", line 119, in connect raise last_ex.with_traceback(None) sqlalchemy.exc.ProgrammingError: (psycopg.ProgrammingError) invalid connection option "plant"
(Background on this error at: https://sqlalche.me/e/20/f405) [/code] Интересно, что в конце написано «sqlalchemy.exc.ProgrammingError: (psycopg.ProgrammingError) неверный вариант подключения «завод»». Возможно, это как-то связано с тем, что мой проект вращается вокруг растений, и я изменил некоторые переменные среды. Однако, когда я попытался создать минимальный рабочий пример, произошла та же ошибка. Ниже приведен минимальный «рабочий» пример: [code]from sqlmodel import SQLModel, create_engine, Session
def get_session(): with Session(engine) as session: yield session
if __name__ == "__main__": init_db() with get_session() as session: pass [/code] Итак, теперь я думаю, что это должно быть как-то связано с базой данных (которую я вообще не менял - это экземпляр докера postgres. Я уже перезапустил его в прошлое использование скрипта и повторение этого ничего не меняет) или это как-то связано с какими-то переменными среды, о которых я не знаю. Весь проект можно найти здесь, как видно, последнее завершенное действие GitHub успешно, и если я попытаюсь загрузить код проекта с GitHub и запустить его локально, произойдет та же ошибка.