我的问题发生如下:
我使用mysqldb的API,代码如下:
conn = MySQLdb.connect(host='192.168.1.16', user='henry', passwd='password', db='test', charset='utf8')
cur = conn.cursor()
没关系,连接mysql是成功的,它也适用于:
select count(*) from songs; everthing is allright.
但如果我使用这样的SQL:
select * from songs;
错误是:
connect mysqldb error. the songs table has 5000000 rows.
答案 0 :(得分:1)
MySQLdb保存内存中select语句的所有行和列,在你的情况下是5M行* n列,所以错误可能是由两个原因引起的:
1.结果太大,无法保存在内存中。
2.结果太大,无法通过网络连接传输。
您可能会尝试返回几行,而不是所有行。如果您真的想要检索整个表格,请多次完成。
答案 1 :(得分:0)
您可以将cursorclass=MySQLdb.cursors.SSCursor
放入connect函数中,这样可以解决问题。