当前位置: 首页 > 面试题库 >

SQLAlchemy JSON列-如何执行包含查询

郭元凯
2023-03-14
问题内容

我在mysql(5.7.12)中有下表:

class Story(db.Model):
    sections_ids = Column(JSON, nullable=False, default=[])

sections_ids 是basicly整数[1,2,…,N]的列表。我需要获取sections_ids包含X的所有行。我尝试了以下操作:

stories = session.query(Story).filter(
        X in Story.sections_ids
    ).all()

但它抛出:

NotImplementedError: Operator 'contains' is not supported on this expression

问题答案:

用途JSON_CONTAINS(json_doc, val[, path])

from sqlalchemy import func

# JSON_CONTAINS returns 0 or 1, not found or found. Not sure if MySQL
# likes integer values in WHERE, added == 1 just to be safe
session.query(Story).filter(func.json_contains(Story.section_ids, X) == 1).all()

在顶层搜索数组时,无需指定 path



 类似资料:
  • 事情是这样的。我有一个术语存储在索引中,它包含特殊字符,比如'-',最简单的代码是这样的: 然后使用QueryParser创建一个查询,如下所示: 不使用QueryParser而直接使用TermQuery可以做我想做的事情,但是这种方式对于用户输入文本来说不够灵活。 我想可能StandardAnalyzer做了一些事情来省略查询字符串中的特殊字符。我尝试了debug,我发现字符串是拆分的,实际查询

  • 我要求用户在控制台写四个数字,每个数字用连字符分隔。然后我将它们拆分,这将自动创建一个列表,并将其转换为int。但我不知道用户输入了多少数字。 如何检查if方法中这个列表包含多少元素?我需要这样的东西: 我不需要建议来重建我的代码,我需要知道我是否可以检查它或不。

  • 本文向大家介绍如何使用MySQL LIKE查询搜索包含%的列值?,包括了如何使用MySQL LIKE查询搜索包含%的列值?的使用技巧和注意事项,需要的朋友参考一下 要使用%搜索列值,语法如下- 让我们首先创建一个表- 使用insert在表中插入一些记录- 使用选择显示表中的所有记录- 这将产生以下输出- 这是使用类似查询的查询来搜索其中包含%的列值的查询- 这将产生以下输出-

  • 问题内容: 大家好,菜鸟Java问题。 我有一个Java项目,并且想在可执行jar中包含一个文本文件。现在,该文本文件位于默认程序包中。 InputFlatFile currentFile =新的InputFlatFile(“ src / theFile.txt”); 正如您使用src所看到的那样,我使用该行抓取文件。但是,这不适用于可执行jar。 有人可以让我知道如何将文件保存在可执行jar中,

  • 问题内容: 我创建了一个使用SQLite作为本地数据库的Swing应用程序。数据库文件位于项目的根目录中。 该应用程序在Eclipse上运行良好,但是当我运行打包的可执行文件Jar时,出现以下错误: 这意味着数据库不可访问。当我检查生成的JAR文件的内容时,数据库文件不再存在。 在代码中,我将数据库链接如下: 我的问题是,如何在可执行的Jar中包含SQLite数据库? 编辑 当我将数据库文件放在源

  • 我创建了一个Swing应用程序,它使用SQLite作为本地数据库。数据库文件位于项目的根目录中。 该应用程序在Eclipse上运行良好,但当我运行打包的可执行Jar时,会出现以下错误: 这意味着无法访问数据库。当我检查结果JAR文件的内容时,数据库文件已经不在了。 在代码中,我将数据库链接如下: 我的问题是,如何在可执行Jar中包含SQLite数据库? 编辑 当我把DB文件放在源代码文件夹并将路径

  • 我正在尝试删除此df中的所有行,其中“DB Serial”列包含字符*: 我正在使用: 但我得到这个错误:

  • 我正在处理一个作为可执行jar运行的Spring Boot应用程序。在我的代码中,我试图检索运行的jar文件所在的文件夹。但是我发现了一些困难。我这样做了: 问题是,通过这种方式,打印输出是这样的: 这不是我所需要的,因为我需要包含jar文件的目录路径,int这个例子是这样的:/home/andrea/git/notartel-api-batch/target/ 怎么了?我错过了什么?如何尝试修复