通过python往数据库插入数据,当一次性插入数据量为几百条时,都没问题,当一次性插入上万条时,报错,
'int' does not support the buffer interface
问题出现在int的一个转换问题。解决办法如下:
修改Python33\Lib\site-packages\pymysql3-0.5-py3.3.egg这个压缩包中的pymysql/connections.py文件中的
unpack_int24
unpack_int32
unpack_int64
三个函数。修改成下面样子:
def unpack_int24(n):
try:
return struct.unpack('B',n[0])[0] + (struct.unpack('B', n[1])[0] << 8) +\
(struct.unpack('B',n[2])[0] << 16)
except TypeError:
return n[0]+(n[1]<<8)+(n[2]<<16)
def unpack_int32(n):
try:
return struct.unpack('B',n[0])[0] + (struct.unpack('B', n[1])[0] << 8) +\
(struct.unpack('B',n[2])[0] << 16) + (struct.unpack('B', n[3])[0] << 24)
except TypeError:
return n[0]+(n[1]<<8)+(n[2]<<16)+(n[3]<<24)
def unpack_int64(n):
try:
return struct.unpack('B',n[0])[0] + (struct.unpack('B', n[1])[0]<<8) +\
(struct.unpack('B',n[2])[0] << 16) + (struct.unpack('B',n[3])[0]<<24)+\
(struct.unpack('B',n[4])[0] << 32) + (struct.unpack('B',n[5])[0]<<40)+\
(struct.unpack('B',n[6])[0] << 48) + (struct.unpack('B',n[7])[0]<<56)
except TypeError:
return n[0]+(n[1]<<8)+(n[2]<<16)+(n[3]<<24) \
+(n[4]<<32)+(n[5]<<40)+(n[6]<<48)+(n[7]<<56)
修改后,重新压缩解压出的pymysql3-0.5-py3.3.egg的所有文件,问题解决啦!
什么?有人说解压不了.egg文件?下载Alzip解压缩软件,神马压缩包都是浮云!