Обновить существующую модель SQLAlchemy ORM из опубликованной модели Pydantic в FastAPI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обновить существующую модель SQLAlchemy ORM из опубликованной модели Pydantic в FastAPI?

Сообщение Anonymous »

Я хочу предоставить метод API, который получает данные в запросе POST (для API регистрации бета-версии) и обновляет его новыми значениями, когда уже существует соответствующая модель. Какой лучший способ добиться этого? В настоящее время я делаю это (несколько упрощенно):
Моя модель ORM (SqlAlchemy):

Код: Выделить всё

class BetaORM(Base):
__tablename__ = "betasignup"
email = Column(EmailType, primary_key=True)
fullname = Column(String, unique=False, index=False, nullable=True)
Моя модель Pydantic:

Код: Выделить всё

class BetaCreate(BaseModel):
email: EmailStr
fullname: Optional[str]
Мой метод публикации FastAPI:

Код: Выделить всё

@app.post("/beta_signup")
def post_beta_signup(beta: schemas.BetaCreate, db: Session = Depends(get_db)):
return create_beta_signup(db=db,signup=beta)
И метод CRUD, который я написал:

Код: Выделить всё

def create_beta_signup(db: Session, signup: schemas.BetaCreate):
db_beta = schemas.BetaORM(**signup.dict())
ret_obj = db.merge(db_beta)
db.add(ret_obj)
db.commit()
return ret_obj
Одна из проблем с использованием merge() заключается в том, что он основан на сопоставлении с первичным ключом непосредственно с адресом электронной почты. Вместо этого я бы предпочел использовать суррогатный ключ, чтобы иметь возможность функцию отключения/удаления и отсутствие необходимости иметь уникальное ограничение для адреса электронной почты на уровне базы данных.


Подробнее здесь: https://stackoverflow.com/questions/631 ... in-fastapi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»