Flask Cassandra查询LIKE

时间:2017-04-22 02:31:29

标签: python flask cassandra

file models.py

class Document(db.Model):
    __table_name__ = 'document'

    nim = db.columns.Integer(primary_key=True)
    prodi = db.columns.Text(primary_key=True)
    tahun = db.columns.Date(primary_key=True, clustering_order="DESC")
    title = db.columns.Text(primary_key=True)
    nama_mhs = db.columns.Text()
    angkatan = db.columns.Date()
    intisari = db.columns.Text()
    kata_kunci = db.columns.Text()
    pembimbing = db.columns.Text()
    file_doc = db.columns.Text()
    password = db.columns.Text()

    def __repr__(self):
        return '<Document %r>' % (self.nim, self.nama_mhs, self.angkatan, self.tahun, self.prodi, self.judul, self.kata_kunci, self.intisari, self.pembimbing, self.password, self.file_doc)

这是我创建的搜索表单,search.html

<from action="{{ url_for('search') }}" method="POST">
   <input name="search" type="text" class="form-control" placeholder="Search">
   <button type="submit">
</from>

如何输入随机文字?文件views.py方法search()

@app.route('/search', methods=['GET','POST'])
def search()
    q1 = sesi.execute(" SELECT title FROM document WHERE title LIKE '%request.form['search']%' ")
    return render_template("title_search.html", q1=q1)

title_search.html

{% extends "base.html" %}
{% block content %}
{% include "search_document.html" %}
<hr>
{% for data in q1 %}
<div class="col-md-8">
    <h3>Title : <a href="#">  {{ data.title }} </a></h3>
    <hr>
</div>
{% endfor %}
{% endblock %}

我在跑步时得到了这个

  

SyntaxException:服务器出错:code = 2000 [CQL中的语法错误   查询]消息=“行1:61在'搜索'中缺少EOF(...文档在哪里   title LIKE'%request.from ['[search]'] ...)“

1 个答案:

答案 0 :(得分:1)

更新后这非常有用,根本原因是views.py中的查询字符串无效,您可以更好地格式化查询字符串,如下所示:

@app.route('/search', methods=['GET','POST'])
def search()
    q1 = sesi.execute("SELECT title FROM document WHERE title LIKE '%{}%'".format(request.form['search']))
    return render_template("title_search.html", q1=q1)

查询字符串就像输入字符串&#34; 物理&#34;到模板中的表单:

"SELECT title FROM document WHERE title LIKE '%Physics%'"

希望它能解决您的问题。