繁体   English   中英

我查询我的 sqlite 数据库并得到结果为 [ ](空白),即使我的数据库有我试图查询的数据

[英]I query my sqlite database and got the result as [ ] (blank) even when my database has the data I tried to query

我查询我的 sqlite 数据库并得到结果为 [ ](空白),即使我的数据库有我试图查询的数据。

所以我将我的 Python 文件与我的 SQLite 数据库连接起来(它连接良好)并通过在 HTML 文件上使用 Jinja 语法显示的表单查询用户输入的数据:

import os and some other not important things


MYDIR = os.path.dirname(__file__)
SQLPATH = os.path.join(MYDIR, "..", "data.sqlite")
conn = _sqlite3.connect(SQLPATH, check_same_thread=False)  
c = conn.cursor()




core = Blueprint('core', __name__)


@core.route('/', methods=['GET', 'POST'])
def index():
    # Call a function to later use in creating the template
    search = Blogsearch_form(request.form)
    print(search.data)
    if request.method == 'POST':
        c.execute("SELECT * FROM blog_post WHERE problem_name LIKE(?)", ('%' + str(search.data) + '%',))
        results = c.fetchall()
        print(results)
        return render_template('blog_search_result.html', results=results)

        # return blog_search_results(search)

    page = request.args.get('page',1,type=int)
    many_posts = BlogPost.query.order_by(BlogPost.date.desc()).paginate(page=page, per_page=10)
    return render_template('index.html', many_posts=many_posts, form=search)

您可以看到我在我的代码中放置了 2 个打印件进行测试,下面是这些打印件的结果: print(search.data): {'search': 'New Life 3 check'} (New Life 3 check 是我的输入输入 HTML 表格)

打印(结果):[]

下面是我的 Blogsearch_form 的 python 文件:

from wtforms import Form, StringField
class Blogsearch_form(Form):
    search = StringField('')

在我的 HTML 文件中显示表格的部分:

<form class="form-inline my-2 my-lg-0 text-right" method=POST>
            {{ render_field(form.search) }}
           <input type=submit value=Search>
        </form>

结果应显示列 prolem_name 包含“New Life 3 check”字样的行中的所有数据。 该行位于名为“blog_post”的表中,该表位于数据库“data.sqlite”中。 但是,正如我在上面显示的那样,它给出了一个空白 [ ]。 我坚持了一段时间,如果你能帮助我,我将不胜感激。

谢谢!

我认为这条线应该是

c.execute("SELECT * FROM blog_post WHERE problem_name LIKE(?)", ('%' + str(search.search.data) + '%',))

代替

c.execute("SELECT * FROM blog_post WHERE problem_name LIKE(?)", ('%' + str(search.data) + '%',))

因为您试图获取字段的数据而不是整个表单。 另外,我建议您提供更具可读性的变量名称!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM