#python #fastapi
Вопрос:
У меня есть следующие модели sql-алхимии. Я хочу вставить данные в пользовательские таблицы, но не удалось. Я использую postgres с sqlalchemy и fastapi
class Group(Base):
__tablename__ = "groups"
id = Column(
Integer,
primary_key=True,
server_default=text("nextval('parties_id_seq'::regclass)"),
)
group_type = Column(
Enum(
"user",,
"partner",,
name="group_type",
),
index=True,
)
class User(Group):
__tablename__ = "users"
id = Column(ForeignKey("groups.id"), primary_key=True)
username = Column(String(100), nullable=False, unique=True)
email = Column(String(150), nullable=False, unique=True)
referral_id = Column(ForeignKey("users.id"))
referral = relationship("User", remote_side=[id])
Я хочу запросить данные на основе электронной почты, а затем вставить данные в таблицу пользователей, но получил следующие ошибки:
sqlalchemy.exc.InvalidRequestError: Query contains no columns with which to SELECT from.
Вот что я пробовал до сих пор:
def get_user_by_email(db: Session, email: str):
return db.query().filter(user_model.User.email == email).first()
def create_user(db: Session, user: user_pydantic.UserCreate):
db_user = user_model.User(
username=user.username,
email=user.email,
)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
def create_user(user: UserCreate, db: Session = Depends(get_db)):
db_user = user_service.get_user_by_email(db, email=user.email)
if db_user:
return db_user
if db_user:
raise HTTPException(status_code=400, detail="Username already registered")
return user_service.create_user(db=db, user=user)
Ответ №1:
Вам нужно определить столбец в вашем запросе:
def get_user_by_email(db: Session, email: str):
return db.query(user_model.User).filter(user_model.User.email == email).first()