#python #sqlalchemy #fastapi
Вопрос:
Я разрабатываю СЕРВЕР REST API, используя FAST-API с SQLALCHEMY.
Но когда я пытаюсь создать какой-то новый столбец данных, используя данные тела запроса, он продолжает возвращаться Internal Server Error
, как показано ниже. Я использую электронную почту в качестве первичного ключа и размещаю информацию об электронной почте при ее создании, но ошибка не устранена.
@router.post("/register/{sns_type}", status_code=200, response_model=Token)
async def register(sns_type: SnsType, reg_info: TestUserRegister, session: Session=Depends(db.session)):
if sns_type == SnsType.email:
if not reg_info.email or not reg_info.pw:
return JSONResponse(status_code=400, content=dict(msg="Email and PW must be provided"))
is_exist = await is_email_exist(reg_info.email)
if is_exist:
return JSONResponse(status_code=400, content=dict(msg="EMAIL_EXISTS"))
if not is_company_exist(reg_info.company):
return JSONResponse(status_code=400, content=dict(msg="No such company exists"))
hash_pw = bcrypt.hashpw(reg_info.pw.encode("utf-8"), bcrypt.gensalt())
new_user = User.create(session, auto_commit=True, email=reg_info.email, pw=hash_pw, Company_ID=Company.get(CompanyName=reg_info.company).CompanyID)
token = dict(Authorization=f"Bearer {create_access_token(data=UserToken.from_orm(new_user).dict(exclude={'pw'}))}")
return token
return JSONResponse(status_code=400, content=dict(msg="Not Supported"))
Это моя схема данных.
class User(Base, BaseMixin):
__tablename__ = "User"
email = Column(String(length=255), primary_key=True)
pw = Column(String(length=2000), nullable=False)
usertype = Column(Enum("Admin", "Company-Host", "Company-User", "Developer"), default="Company-User")
status = Column(Enum("active", "deleted", "blocked"), default="active")
CompanyID = Column(Integer, ForeignKey("Company.CompanyID"))
phone_number = Column(String(length=20), nullable=True, unique=True)
profile_img = Column(String(length=1000), nullable=True)
sns_type = Column(Enum("FB", "G", "K", 'N'), nullable=True)
updated_at = Column(DateTime, nullable=False, default=func.utc_timestamp(), onupdate=func.utc_timestamp())
Комментарии:
1. Я думаю, нам нужно посмотреть код для
User.create
.2. Пожалуйста, укажите соответствующие сведения об отладке (т. Е. сообщение об ошибке) в виде текста в вашем сообщении, а также изображения, удаляющие сообщение об ошибке из контекста сообщения, которые трудно прочитать для тех, у кого есть проблемы с доступом и которые на самом деле недоступны для поиска.