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

如何在sqlalchemy中的自定义查询中将列表绑定到参数?

太叔飞翰
2023-03-14
问题内容

我出于性能原因使用此sql

 sql_tmpl = """delete from Data where id_data in (:iddata) """
 params = {  
                    'iddata':[1, 2,3 4],
                    }
 # session is a session object from   sqlalchemy
 self.session.execute(text(sql_tmpl), params)

但是我有一个例外

NotSupportedError: (NotSupportedError) ('Python type list not supported.  param=1', 'HY097')

有什么解决方法可以让我将列表绑定到’in’子句的参数?


问题答案:

对旧问题的新答案,因为自从首次发布此问题/接受的答案以来,似乎某些基本功能已发生更改(如@vicvicvic在@Gary的答案中所暗示的,但我认为它应该是提高可见度的答案)

psycopg2现在支持类型修改,类型修改除了其他功能外,还允许将列表传递到查询中的单个参数化值中。这也可以在SQLAlchemy中使用,至少至少适用于对Postgresql数据库的原始SQL式查询(我无权访问其他数据库类型,因此我不知道是否sqlalchemy会尊重其他数据库的约定,但是我需要的倾斜度引用是可以的)。

some_ids = [1, 2, 3, 4]
query = "SELECT * FROM my_table t WHERE t.id = ANY(:ids);"
conn.execute(sqlalchemy.text(query), ids=some_ids)
## runs just fine

我发现没有对包装器的调用sqlalchemy.text,它给了一个提示ProgrammingError: syntax error at or near ":"



 类似资料:
  • 我的存储库如下所示: 如何将分页添加到不使用JPA默认“findAll”查询的自定义查询? 如何让Spring将其转换为页面或可分页对象? 因此,在我的AppController中,我可以这样使用它: Page=heroService。findAllHeroByGroupName(pageNum); 请注意,返回一个列表,而不是页面对象。

  • 问题内容: 现在,我需要使用以下结构来将多个参数绑定到mysqli查询中: 我使用以下代码计算出问号的数量,并将其插入查询中: 我的问题是,肯定有一种方法可以动态处理查询中尽可能多的输入。硬编码似乎是处理此问题的一种非常糟糕的方法。 我正在使用PHP版本5.4.10 问题答案: 不幸的是,默认情况下,bind_param()不接受数组而不是单独的变量。但是,自PHP 5.6起,将进行重大改进。 要

  • 问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 6年前关闭。 我有一个mysql查询,但无法为其绑定参数 我已经试过了 但我收到了并且出错了: 警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数量与绑定变量的数量不

  • 问题内容: 使用SQLAlchemy反射,如何查询特定列中的数据? 上面的查询为我提供了 member 表中所有列中的所有数据。但是我想要从列中获取特定数据。例如,我想检索 用户名 和 密码 列,但是语法不正确。以下是我到目前为止的内容: 失败并显示以下错误: 正在使用来自Oracle的Python3.2,SQLAchemy0.8和mysqlconnector。 编辑:一些轻微的进步 刚刚发现,在

  • 我正在使用JdbcTemplate。queryForObject(字符串sql、RowMapper、RowMapper、Object…args)从Oracle获取一行,但继续获取EmptyResultDataAccessException结果大小不正确:应为1,实际为0。 我已经使用Oracle SQL Developer验证了我的SQL,它返回了1行,就像它应该返回的一样。 > 这一直失败。 这

  • 本文向大家介绍如何在PostgreSQL中定义和查询json列?,包括了如何在PostgreSQL中定义和查询json列?的使用技巧和注意事项,需要的朋友参考一下 在PostgreSQL中定义JSON列的能力使其功能非常强大,并且可以帮助PostgreSQL用户体验SQL和NoSQL的两全其美。 创建JSON列非常简单。您只需要像创建其他列一样创建/定义它,然后使用数据类型作为JSON。 让我们在