Сеанс Fastapi SqlAlchemy возвращает пустой объект? Но когда я печатаю его, там есть его фактические данные. ⇐ Python
-
Гость
Сеанс Fastapi SqlAlchemy возвращает пустой объект? Но когда я печатаю его, там есть его фактические данные.
Мое приложение использует fastapi==0.109.2 с SQLAlchemy==2.0.27.
Итак, мое соединение и сеанс sql работали нормально, но я получил некоторые ошибки от sqlalchemy и изменил способ подключения для использования контекстного менеджера следующим образом:
@contextlib.contextmanager защита session_scope(): db_engine = create_engine(url) # echo=True, если необходимо просмотреть фоновый SQL Сеанс = создатель сеанса (bind=db_engine) сеанс = сеанс() пытаться: сессия доходности сеанс.коммит() кроме: печать("Ошибка") сеанс.rollback() поднимать окончательно: сеанс.закрытие()
Затем я импортирую его и использую здесь, как вы можете видеть, у меня там 2 отпечатка: первый показывает фактические данные, второй (который возвращает конечная точка) - это объект emtpy, и я не могу найдите проблему...
@router.get("/me") Защиту getusers (зависимости = Зависит (JWTBearer ())): пользователь = Нет с session_scope() как sess: x = sess.query(TokenTable).where(TokenTable.access_toke == зависимости).first() пользователь = sess.query(Пользователь).где(User.id == x.user_id).first() печать(user.__dict__) печать(user.__dict__) вернуть пользователя Журналы:
INFO: 127.0.0.1:40662 — «GET /users/me HTTP/1.1» 200 ОК {'_sa_instance_state': , 'first': 'Deez', 'last': 'Nuts', 'email': 'test2@test.com', 'id': 2, «is_active»: True, «coach»: нет} {'_sa_instance_state': } ИНФОРМАЦИЯ: 127.0.0.1:40662 — «GET /users/1/logs HTTP/1.1» 200 ОК ИНФОРМАЦИЯ: 127.0.0.1:40656 — «GET /users/me HTTP/1.1» 200 ОК Я прочитал много документации по sqlachemy, нашел здесь несколько вопросов, но ни один из них не касался этой конкретной темы.
Мое приложение использует fastapi==0.109.2 с SQLAlchemy==2.0.27.
Итак, мое соединение и сеанс sql работали нормально, но я получил некоторые ошибки от sqlalchemy и изменил способ подключения для использования контекстного менеджера следующим образом:
@contextlib.contextmanager защита session_scope(): db_engine = create_engine(url) # echo=True, если необходимо просмотреть фоновый SQL Сеанс = создатель сеанса (bind=db_engine) сеанс = сеанс() пытаться: сессия доходности сеанс.коммит() кроме: печать("Ошибка") сеанс.rollback() поднимать окончательно: сеанс.закрытие()
Затем я импортирую его и использую здесь, как вы можете видеть, у меня там 2 отпечатка: первый показывает фактические данные, второй (который возвращает конечная точка) - это объект emtpy, и я не могу найдите проблему...
@router.get("/me") Защиту getusers (зависимости = Зависит (JWTBearer ())): пользователь = Нет с session_scope() как sess: x = sess.query(TokenTable).where(TokenTable.access_toke == зависимости).first() пользователь = sess.query(Пользователь).где(User.id == x.user_id).first() печать(user.__dict__) печать(user.__dict__) вернуть пользователя Журналы:
INFO: 127.0.0.1:40662 — «GET /users/me HTTP/1.1» 200 ОК {'_sa_instance_state': , 'first': 'Deez', 'last': 'Nuts', 'email': 'test2@test.com', 'id': 2, «is_active»: True, «coach»: нет} {'_sa_instance_state': } ИНФОРМАЦИЯ: 127.0.0.1:40662 — «GET /users/1/logs HTTP/1.1» 200 ОК ИНФОРМАЦИЯ: 127.0.0.1:40656 — «GET /users/me HTTP/1.1» 200 ОК Я прочитал много документации по sqlachemy, нашел здесь несколько вопросов, но ни один из них не касался этой конкретной темы.
Мобильная версия