【问题标题】:How to use "Like" operator in sqlAlchemy [duplicate]如何在 sqlAlchemy 中使用“Like”运算符 [重复]
【发布时间】:2016-09-08 07:26:26
【问题描述】:

您好,我是 stackoverflow 的新成员。我目前在烧瓶中使用 sqlAlchemy。尝试获取搜索 url 提供的匹配字符串类别。搜索url的代码如下:

@productapi.route("/search/category", methods=["GET"])
def search_category():
    category_param_value = request.args.get('querystr', None)
    print(category_param_value)
    if category_param_value is None:
        return jsonify(message='Which category you want to search????'), 400
    try:
        category = Category.query.filter_by(
            title=Category.title.like("category_param_value %"))
    except SQLAlchemyError as err:
        return jsonify(message='Category not found.'), 400
    category_list = category_schema.dumps(category)
    return category_list.data, 200

我尝试使用带有以下网址的 httpie:http get http://192.168.1.98:5000/api/v1/search/category?querystr="test"

错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) operator does not exist: character varying = boolean

希望得到积极的回应。谢谢。

【问题讨论】:

  • 将变量插入字符串仅在 Python 3.6 及更高版本中可用,语法为 f"{category_param_value}%"。不过要小心;将变量插入原始 SQL 字符串、HTML 等是危险的。在这种情况下,您没有使用原始 SQL,所以没问题。

标签: python-3.x sqlalchemy flask-sqlalchemy


【解决方案1】:

您没有使用正确的语法。你也应该格式化你传递给like的字符串。

改变这一行:

category = Category.query.filter_by(title=Category.title.like("category_param_value %"))

到这里:

category = Category.query.filter(Category.title.like(category_param_value + "%")).all()

【讨论】:

  • 谢谢你。它现在工作正常。我在参数中使用 % 时犯了错误。
猜你喜欢
  • 2018-04-10
  • 2017-03-25
  • 2020-10-04
  • 2011-06-28
  • 1970-01-01
  • 2021-05-26
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多