Прямая ссылка должна быть выражением - получено 'postgresql
Я получаю эту ошибку
Forward reference must be an expression -- got 'postgresql
Вот полный журнал
Traceback (most recent call last):
File "/usr/local/lib/python3.9/typing.py", line 528, in __init__
code = compile(arg, '<string>', 'eval')
File "<string>", line 1
postgresql+asyncpg://postgres:postgres@db:5432/blog
^
SyntaxError: invalid syntax
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/code/asgi.py", line 3, in <module>
from api.app import create_app
File "/code/api/app.py", line 2, in <module>
from api.database import create_db_and_tables
File "/code/api/database.py", line 3, in <module>
from api.config import settings
File "/code/api/config.py", line 8, in <module>
class Settings(BaseSettings):
File "/usr/local/lib/python3.9/site-packages/pydantic/main.py", line 179, in __new__
annotations = resolve_annotations(namespace.get('__annotations__', {}), namespace.get('__module__', None))
File "/usr/local/lib/python3.9/site-packages/pydantic/typing.py", line 395, in resolve_annotations
value = ForwardRef(value, is_argument=False, is_class=True)
File "/usr/local/lib/python3.9/typing.py", line 530, in __init__
raise SyntaxError(f"Forward reference must be an expression -- got {arg!r}")
SyntaxError: Forward reference must be an expression -- got 'postgresql+asyncpg://postgres:postgres@db:5432/blog'
Вот как я его использую
class Settings(BaseSettings):
PROJECT_NAME: str = f"SQLModel API - {os.getenv('ENV', 'development').capitalize()}"
DESCRIPTION: str = "A FastAPI + SQLModel production-ready API"
ENV: str = os.getenv('ENV', 'development')
VERSION: str = "1"
SECRET_KEY: str = secrets.token_urlsafe(32)
# DATABASE_URI: Optional[PostgresDsn] = None
DATABASE_URI: os.environ.get("DATABASE_URL") # sql
Где переменная env устанавливается вот так в dockerfile:
services:
web:
build:
context: .
dockerfile: "Dockerfile"
command: python asgi.py
volumes:
- .:/code
ports:
- 8004:8000
environment:
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/blog
depends_on:
```
Изменить -> DATABASE_URI: os.environ.get("DATABASE_URL")
на -> DATABASE_URI:str = os.environ.get("DATABASE_URL")