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

使用sql sqlite3从sqlite表中选择其中rowid在列表中— DB-API 2.0

程成天
2023-03-14
问题内容

以下作品:

>>> cursor.execute("select * from sqlitetable where rowid in (2,3);")

以下不是:

>>> cursor.execute("select * from sqlitetable where rowid in (?) ", [[2,3]] )
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

有没有一种方法可以传递python列表,而不必先将其格式化为字符串?


问题答案:

不幸的是没有。每个值都必须具有自己的参数标记(?)。由于参数列表可以(大概)具有任意长度,因此必须使用字符串格式来构建正确数量的参数标记。幸运的是,这并不难:

args=[2,3]
sql="select * from sqlitetable where rowid in ({seq})".format(
    seq=','.join(['?']*len(args)))

cursor.execute(sql, args)


 类似资料:
  • 我有四张桌子A、B、C和D。 我需要选择值2(我从表D中猜测),其中值1和值3在表D中的同一行中,并且在表A和表C的行中都有相同的“城市”。 所以,如果表A有一行 表C有行 表D有行 然后我需要打印:

  • 问题内容: 是否可以执行PIVOT并从表中选择列表,而不是使用单个值? 像这样(不正确的语法错误): 这个可以编译,但是对我不起作用: PS:我不想使用动态SQL,有没有一种方法可以不使用动态SQL? 问题答案: 如果没有动态SQL,那么恐怕答案是否定的,那是不可能的。解析器需要预先知道值才能执行到列的数据透视。

  • 我有两个问题: 从表1中选择*,其中my\u值介于值1和值2之间 从表2中选择值1、值2 表2中的value1和value2的集合是唯一的。如何在第一个查询的where语句中插入查询2的所有结果集?

  • 假设我有以下熊猫数据: 但是如何根据值列表进行子集呢?-类似这样: 得到:

  • 问题内容: 如何使用JOIN从一个表中选择所有列,从另一个表中仅选择一些列?在MySQL中。 问题答案: 只需使用表名: 这将选择所有列和列和从。

  • 我最近一直在通读Geb的书,并试图掌握它,因为它似乎是一个伟大的工具。我觉得我已经到了那里,但仍然有一些真正的核心概念,我似乎无法理解。 谢谢!