gpt4 book ai didi

python - 带有列表推导的 MySQL 插入

转载 作者:行者123 更新时间:2023-11-29 02:19:53 25 4
gpt4 key购买 nike

我一直在尝试转换我的大部分 mysqlclient通过使用 List Comprehensions 执行要在一行中完成的命令。以下代码段就是一个例子:

def org(conn, cursor, target_org=None, target_sid=None):
try:
if target_sid is not None:
target_org = [{"sid": target_sid}]
cursor.executemany(
"INSERT INTO `Orgs` (`sid`) VALUES (%s);",
[[Org['sid']] for Org in target_org])
conn.commit()

...

但是,如果我想要一个包含多列的 MySQL 查询,例如

"INSERT INTO `Citizens`(`Handle`,`Org`,`Role`,`Rank`,`Visibility`,`Stars`,`Type`)VALUE(%s,%s,%s,%s,%s,%s,%s)"

我如何实现一个列表理解来接收一个列表 member ,该列表由列表组成,每个成员的数据都与上述示例中的 executemany 命令一起使用?

例如,仅抓取 Handle 列,它看起来像这样

[Mem['handle'] for Mem in member]
# (cursor.executemany must always have a list as second argument)

成员示例:

[{'roles': [], 'rank': 'No SCB account', 'type': 'main', 'stars': 2, 'visibility': 'visible', 'sid': 'imperium', 'handle': 'freakyeagle'}, {'roles': [], 'rank': 'Fleet Member', 'type': 'main', 'stars': 1, 'visibility': 'visible', 'sid': 'imperium', 'handle': 'cadimus'}, {'roles': [], 'rank': 'Fleet Member', 'type': 'main', 'stars': 1, 'visibility': 'visible', 'sid': 'imperium', 'handle': 'belleal'}]

最佳答案

您可以将映射与 executemany 一起使用。插值将根据您的字典进行。由于您的 target_org 是键为“sid”的字典列表所以你可以这样做:

cursor.executemany( "INSERT INTO Orgs (sid) VALUES (%(sid)s);", target_org) 

我认为这也适用于您的第二个问题。

参见:https://www.python.org/dev/peps/pep-0249/#paramstyle用于 python db-api 中的参数

关于python - 带有列表推导的 MySQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com