![](/img/trans.png)
[英]How can I query and get data from my sqlite database even when my search input have similar words that is apart from each other (not continuously)
[英]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.