使用MySQLdb连接MySQL进行操作时的一个问题

使用MySQLdb连接MySQL进行操作时的一个问题

在mysqldb数据库里有两个表:mysqldbtest和mysqldbtest2。但是不管是用
cursor.fetchmany()还是cursor.fetchone(),返回的元组里都只有一个值。

请问这是怎么回事?
谢谢!

[Copy to clipboard] [ - ]
CODE:
import MySQLdb

conn = MySQLdb.connect(host='192.168.4.59',
                       user='bibby',
                       passwd='bibby',
                       db='mysqldb')

cursor = conn.cursor()

cursor.execute('''show tables''')
tables = cursor.fetchmany()
print "Tables :",tables

cursor.close()
conn.close()

发现用fetchall()可以:

[Copy to clipboard] [ - ]
CODE:
print "Tables :",tables
print tables[0]
print tables[1]

结果:

[Copy to clipboard] [ - ]
CODE:
Tables : (('mysqldbtest',), ('mysqldbtest2',))
('mysqldbtest',)
('mysqldbtest2',)

代码:

[Copy to clipboard] [ - ]
CODE:
print "Tables :",tables
print tables[0][0]
print tables[1][0]

结果:

[Copy to clipboard] [ - ]
CODE:
Tables : (('mysqldbtest',), ('mysqldbtest2',))
mysqldbtest
mysqldbtest2



[Copy to clipboard] [ - ]
CODE:
tables = cursor.fetchall()
print "Tables :",tables

慢了一步,呵呵

还是没搞清楚fetchmany()为啥不行

http://www.devshed.com/index2.ph ... age=0&hide_js=1


QUOTE:
原帖由 wolfg 于 2005-12-31 11:41 发表
还是没搞清楚fetchmany()为啥不行

http://www.devshed.com/index2.ph ... age=0&hide_js=1

看了cursor.py里关于fetchmany函数的定义:

[Copy to clipboard] [ - ]
CODE:
def fetchmany(self, size=None):
        """Fetch up to size rows from the cursor. Result set may be smaller
        than size. If size is not defined, cursor.arraysize is used."""
        self._check_executed()
        end = self.rownumber + (size or self.arraysize)
        result = self._rows[self.rownumber:end]
        self.rownumber = min(end, len(self._rows))
        return result

有size参数。如果没有指定,默认是self.arraysize。
但是我测试了fetchmany(3),居然不行,得到的结果是空的