我尝试向数据库插入大量数据
insert_list = [(1,1,1,1,1,1),(2,2,2,2,2,2),(3,3,3,3,3,3),....] #up to 10000 tuples in this list
conn = pyodbc.connect('DRIVER={FreeTDS};SERVER=xxxxx;DATABASE=xxxx;UID=xx;PWD=xx;TDS_Version=7.0')
cursor = conn.cursor()
sql = "insert into ScanEMAxEMAHistoryDay(SecurityNumber, EMA1, EMA2, CrossType, DayCross, IsLocalMinMax) values (?, ?, ?, ?, ?, ?)"
cursor.executemany(sql, insert_list)
cursor.executemany(sql, insert_list)
pyodbc.ProgrammingError: ('无效的参数类型。param-index=4 param-type=numpy.int64', 'HY105')
将元组数量减少到100:
cursor.executemany(sql, insert_list[:100])
cursor.executemany(sql, insert_list[:100])
pyodbc.ProgrammingError: ('Invalid parameter type. param-index=4 param-type=numpy.int64', 'HY105') cursor.executemany(sql, insert_list[:100])
减少为5个元组:
cursor.executemany(sql, insert_list[:5])
conn.commit()
这可以插入到数据库中
我尝试过:
sql = 'SET GLOBAL max_allowed_packet=50*1024*1024'
cursor.execute(sql)
在执行excuteMany()之前出现了错误:
pyodbc.ProgrammingError: ('42000',"[42000] [FreeTDS][SQL Server]'GLOBAL'不是一个已识别的SET选项。 (195)(SQLExecDirectW)")
我该如何解决这个问题。
谢谢。
df.values.tolist()
,它对我有效。如果您需要进一步的帮助,您应该提出一个新问题。 - Gord Thompson