def fast_execute():
mydb = pyodbc.connect(connection_string,autocommit=True)
mycursor = mydb.cursor()
mycursor.execute("use care_new")
mycursor.execute("truncate dummytable")
print('executed 1')
mycursor.fast_executemany = True
print('executed 2')
query = "insert into dummytable(ID, Name) values(?,?)"
value = [((f'{i}'),(f'Names{str(i)}'),) for i in range(10000)]
t0 = time.time()
print('executed 3')
mycursor.executemany(query, value)
print('executed 4')
print(f'{time.time() - t0:.1f} seconds for fast execute many')
mydb.close()输出
executed 1
executed 2
executed 3我不明白为什么程序不执行mycursor.executemany(query,value)和发布步骤。
如果我注释掉mycursor.fast_executemany = True行,它可以正常工作。但这大约需要45秒,因为我要处理10000张唱片。
我是不是漏掉了什么?
发布于 2022-08-24 01:03:27
在元组列表中嵌套的级别太多了。插入的每一行都是由2个元素组成的普通元组。
也不需要将ID格式化为字符串。
value = [(i, f'Names{str(i)}') for i in range(10000)]https://stackoverflow.com/questions/73466193
复制相似问题