我是python的新手。我试图实现的是将我的列表/元组中的值插入到我的红移表中,而不需要迭代。我有大约100万行和1列。
下面是我用来创建列表/元组的代码。
cursor1.execute("select domain from url limit 5;")
for record, in cursor1:
ext = tldextract.extract(record)
mylist.append(ext.domain + '.' + ext.suffix)
mytuple = tuple(mylist)
我不确定什么是最好使用,元组还是列表。print(mylist)
和print(mytuple)
的输出如下所示。
列表输出
['friv.com','steep.tv',' wordpress.com ',' fineartblogger.net ',' v56.org ']
元组输出
(“friv.com”、“steep.tv”、“wordpress.com”、“fineartblogger.net”、“v56.org”)
现在,下面是我用来将值插入到红移表中的代码,但我得到了一个错误:
cursor2.execute("INSERT INTO sample(domain) VALUES (%s)", mylist) or
cursor2.execute("INSERT INTO sample(domain) VALUES (%s)", mytuple)
错误-在字符串格式化期间并非所有参数都已转换
任何帮助是感激。如果任何其他细节是需要的,请让我知道,我会编辑我的问题。
更新1:
尝试使用以下代码,但得到不同的错误。
args_str = ','.join(cur.mogrify("(%s)", x) for x in mylist)
cur.execute("INSERT INTO table VALUES " + args_str)
错误- INSERT的表达式多于目标列
2条答案
按热度按时间wgeznvg71#
我认为您正在寻找快速执行助手:
它的作用是用100个值替换%s。我不确定你可以把page_size设置得多高,但这样应该会更好。
lndjwyie2#
终于找到了一个解决方案。由于某种原因
cur.mogrify
没有给我正确的sql字符串插入。创建了我自己的SQl字符串,它的工作速度比cur.executeall()
快得多谢谢你们的帮助!