Я пытаюсь создать динамический c API, используя GraphQL, Flask и Графен. У меня есть объект Candidate, который имеет такие атрибуты, как first_name, last_name, sex, et c. Я хочу сделать одну конечную точку, которая может динамически строить запрос. Я пробовал несколько способов, но все они дают мне ошибки (я использую GraphiQL для отправки запросов на сервер). Я проверил эти методы в оболочке flask и подтвердил, что они там работают.
class Candidate(Base):
__tablename__ = 'candidate'
brandi_id = Column(Integer, primary_key=True)
.
.
.
Метод 1
clauses = and_( *[getattr(Candidate, key)==value for key, value in data.items()] )
return Candidate.query.filter(clauses).all()
ошибка:
type object 'Candidate' has no attribute 'first_name'
Метод 2
sql = "SELECT * FROM Candidate "
for key, value in data.items():
sql += f'WHERE {key} = "{value}" '
with engine.connect() as conn:
return conn.execute(sql)
Ошибка :
(psycopg2.errors.UndefinedColumn) column "Mitch" does not exist
LINE 1: SELECT * FROM Candidate WHERE first_name = "Mitch"
^
[SQL: SELECT * FROM Candidate WHERE first_name = "Mitch" ]
(Background on this error at: http://sqlalche.me/e/f405)
Метод 3
data = utils.input_to_dictionary(input)
return db_session.query(Candidate).filter_by(**data).all()
ошибка :
SQL expression, column, or mapped entity expected - got. <Candidate meta=<SQLAlchemyObjectTypeOptions name=Candidate'>>
Есть идеи? Спасибо!