БД возвращает пустой список, когда я пытаюсь получить отсортированные строки - PullRequest
0 голосов
/ 30 октября 2019

Я новичок в колбе. Я пытаюсь отсортировать строки в моей БД в соответствии с выбранным параметром в форме. Проблема в том, что я получаю пустой список вместо списка кортежей с данными строк в нем. Хотя и почтовый запрос, и моя БД не пусты, и мой SQL-запрос работает с моей текущей БД в sqlitebrowser.

rout.py:

@bp.route('/poll-process', methods=['POST', 'GET'])
def process():
    form =  ChoiceForm(request.form)
    if request.method == 'POST':
        select = request.form.get('sel')  
        if select:
            print(select)
            db = get_db()
            res = db.execute(
            '''SELECT username, sex, city, emotion, month, poll_time
                FROM poll
                JOIN author
                    ON poll.author_id = author.id
                ORDER BY sex ASC''', (select)                  
            ).fetchall()
            print(res) 
            db.close
    return render_template('process.html', form=form)

shema.sql:

DROP TABLE IF EXISTS author;
DROP TABLE IF EXISTS poll;

CREATE TABLE `author` (
    `id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `username`  TEXT NOT NULL,
    `sex`   TEXT NOT NULL
);

CREATE TABLE `poll` (
    `poll_id`   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `city`  TEXT NOT NULL,
    `emotion`   TEXT NOT NULL,
    `month` TEXT NOT NULL,
    `poll_time` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `author_id`   INTEGER,   
  FOREIGN KEY(`author_id`) REFERENCES `author`
);

process.html:

<form method="post">
  <!-- select -->
  <div class="form-group mt-4">  
    <h2>Choose criteria to sort</h2>
    <select class="custom-select" name="sel">        
      {% for field in form.sel %}
        <option>{{ field }}</option>    
      {% endfor %}      
    </select>
    ...
    {{form.submit(class="btn btn-primary")}}
</form>

Вот мой вывод:

 * Serving Flask app "flaskapp" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 231-471-963
poll_time
[]
127.0.0.1 - - [30/Oct/2019 21:16:59] "POST /poll-process HTTP/1.1" 200 -

Заранее спасибо!

1 Ответ

1 голос
/ 31 октября 2019

изменить ваш запрос в routes.py

@bp.route('/poll-process', methods=['POST', 'GET'])
def process():
    form =  ChoiceForm(request.form)
    if request.method == 'POST':
        select = request.form.get('sel')  
        if select:
            print(select)
            db = get_db()
            res = db.execute(
            '''SELECT username, sex, city, emotion, month, poll_time
                FROM poll
                JOIN author
                ON poll.author_id = author.id
                ORDER BY %s''' % (select,)                  
            ).fetchall()
            print(res) 
            db.close
    return render_template('process.html', form=form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...