在列表中连接元组而不将它们转换为 Str
Joining tuples within a list without converting them to Str
我正在尝试创建这样的 Mysql 插入查询以插入数百万条记录:
INSERT INTO mytable (fee, fi) VALUES
('data1',96)
,('data2',33)
,('boot',17)
我的值作为元组存储在列表中:
datatuplst = [("data1",96), ("data2", 33),("data3", 17)]
我的代码:
c3 = con.cursor()
c3.execute("INSERT INTO `bigdataloadin` (`block_key`, `id`) VALUES %s" %','.join(datatuplst))
这不起作用,我收到错误消息:
类型错误:序列项 0:预期的 str 实例,已找到元组
需要有关如何使用存储在元组列表中的值创建动态查询的帮助。
您可以生成您需要的字符串。这个错误已经足够解释了。当它是 ','.join(datatuplst)
时,解释器被迫加入元组。所以使用列表理解你可以这样说:
','.join([str(el) for el in datatuplst])
此语句的输出将是:"('data1', 96),('data2', 33),('data3', 17)"
那么您的实际 INSERT 语句将被解释如下:
"INSERT INTO `bigdataloadin` (`block_key`, `id`) VALUES ('data1', 96),
('data2', 33),('data3', 17)"
祝你好运!
我正在尝试创建这样的 Mysql 插入查询以插入数百万条记录:
INSERT INTO mytable (fee, fi) VALUES
('data1',96)
,('data2',33)
,('boot',17)
我的值作为元组存储在列表中:
datatuplst = [("data1",96), ("data2", 33),("data3", 17)]
我的代码:
c3 = con.cursor()
c3.execute("INSERT INTO `bigdataloadin` (`block_key`, `id`) VALUES %s" %','.join(datatuplst))
这不起作用,我收到错误消息:
类型错误:序列项 0:预期的 str 实例,已找到元组
需要有关如何使用存储在元组列表中的值创建动态查询的帮助。
您可以生成您需要的字符串。这个错误已经足够解释了。当它是 ','.join(datatuplst)
时,解释器被迫加入元组。所以使用列表理解你可以这样说:
','.join([str(el) for el in datatuplst])
此语句的输出将是:"('data1', 96),('data2', 33),('data3', 17)"
那么您的实际 INSERT 语句将被解释如下:
"INSERT INTO `bigdataloadin` (`block_key`, `id`) VALUES ('data1', 96),
('data2', 33),('data3', 17)"
祝你好运!