Динамический c запрос с SQLAlchemy и GraphQL - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь создать динамический 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. Метод 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. Метод 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. Метод 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'>>
    

Есть идеи? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...