Обработка объектов ResultProxy - PullRequest
1 голос
/ 15 октября 2019

Я пытаюсь сделать запрос к моей таблице с именем «books» и использую raw sql, чтобы получить название книги. На данный момент в таблице 5 столбцов: id, isbn, title, author, p_year. Запрос возвращает мне объект ResultProxy, и я не могу найти способ извлечь из него заголовок

@app.route("/", methods=['GET', 'POST'])
@app.route("/home", methods=['GET', 'POST'])
def home():
    form = SearchForm()
    if form.validate_on_submit():
        results = db.engine.execute("""
            select * from books where title like '%% + form.input.data + %%'
        """)
        print(list(results))
    return render_template('home.html', form=form)

Правильно ли я использую запрос на самом деле? Я был в курсе, а требования к курсу конкретно диктуют, что я должен использовать сырой SQL. Кстати, я использую SQLAlchemy

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Я нашел решение сам. Если вы хотите запросить у таблицы базы данных совпадение ввода пользователя с помощью SQLAlchemy, сделайте следующее:

        form = SearchForm()
        results = Book.query.filter(Book.title.ilike('%%' + form.input.data + '%')).all()
        for result in results:
            print(f"{result.title}, {result.author}, {result.p_year}")

Здесь (Book) - имя таблицы из ваших моделей, первая строка возвращает объект спискаи вы можете перебрать один за другим. (title, author, p_year) - это имена столбцов в моей таблице, я использую форму для создания панели поиска

0 голосов
/ 15 октября 2019

Если вы используете SQLAlchemy ? Если это так, вы можете попробовать что-то вроде этого:

results = results.fetchall()

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