如何从字典中选择多行(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 中的第一个值写入数据库
在 python 中编写通用 cursor.executemany()
如何使用 cur.executemany() 存储来自 Twitter 的数据