如何从字典中选择多行(executemany select)

Posted

技术标签:

【中文标题】如何从字典中选择多行(executemany select)【英文标题】:How to select many rows from a dictionary (executemany select) 【发布时间】:2010-12-26 11:00:27 【问题描述】:

我正在使用 Python 及其 mysqldb 模块, 是否可以从条件中的元组/字典/列表中执行类似“selectmany”的操作

类似这样的:

cursor.executemany("""SELECT * FROM customers WHERE name= %(name)s""",[d.__dict__ for d in data])

selected_rows = cursor.fecthall()

使用此方法进行删除/更新/插入可以正常工作:

cursor.executemany("""UPDATE customers SET item = %(item)s WHERE name = %(name)s""",[d.__dict__ for d in data])

【问题讨论】:

【参考方案1】:

您可以使用“WHERE IN” sql 语法,例如,

SELECT * FROM customers WHERE name IN ('john', 'mary', 'jane');

【讨论】:

大规模呢?批处理查询是唯一的解决方案吗?【参考方案2】:

我还没有使用executemany 方法,但我想知道它是否适用于 SELECT。怎么样

... where name in (...)

而不是

... where name = ...

并插入一个包含 data 字典键的元组?

【讨论】:

【参考方案3】:

executemany 大部分用于插入或更新。查询data 并不能很好地工作,根据我的经验,它只会返回最后一组参数。

【讨论】:

以上是关于如何从字典中选择多行(executemany select)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 executemany 将每个 Key 中的第一个值写入数据库

如何在 SQL Server 中插入多行?

在 python 中编写通用 cursor.executemany()

如何使用 cur.executemany() 存储来自 Twitter 的数据

MySQLdb使用批量插入executemany方法插入mysql

Python:从文件中读取多行并将实例存储在字典中