2016-12-17 6 views
0

の行を有する場合、すべての空の戻りフェッチ空の配列が、カーソル行を有するように、私は結果を得る、コードである行数> 1を示す:PyMySqlカーソルがデータベースは次のPython

`

def __init__(self,readLink): 
    if readLink==0: 
     self.linksToRead = 1000000000 
    else: 
     self.linksToRead = readLink 
    self.linkCount = 0 
    self.wordsList =[] 
    self.parsedLinks=[] 
    self.urlList =[] 
    self.connection = pymysql.connect(host='localhost', 
         user='root', 
         password='[email protected]', 
         db='scrapper', 
         charset='utf8', 
         cursorclass=pymysql.cursors.DictCursor, autocommit=True) 


    with self.connection.cursor() as cursor: 

     sql2 = "SELECT * FROM `linksparsed`" 
     try: 
      cursor.execute(sql2) 
      #self.connection.commit() 
     except Exception as ex: 
      print(ex) 

     result = cursor.fetchall() 
     cursor.rowcount #shows 3 
     totalLength = len(result) # shows 0 
     for row in result: 
      self.parsedLinks.append(row) 
+0

あなたはresult'内の行のために '書くこともしかして。カーソル自体は反復可能ではありません。また、どの配列を参照していますか? Pythonでは、arrayは特定のデータ構造であり、リストやタプルとの間では衝突しないでください。カーソルはどこに行カウントを表示しますか? – Parfait

+0

私は試して、結果で質問を更新しましたが、結果は空ですので実際には動作しません、行数は3回です 'cursor.rowcount' –

+0

どこでカーソルを初期化しますか?そしてもう一度 'rowcount'をどこで実行しますか?私たちはあなたの問題を私たちの目的のために再現したい。あなたのクラスをもっと見る必要があるかもしれません。カーソルを 'self 'で修飾する必要があるかもしれません。 – Parfait

答えて

0

fetchall()の後ろの数字は何ですか? 3の場合はrowcountと等しく、すでにフェッチされた行があることを意味します。

これはfetchAllののソースコードである、で仮定するリターン "結果self._rows [self.rownumber:]"

def fetchall(self): 
    """Fetch all the rows""" 
    self._check_executed() 
    if self._rows is None: 
     return() 
    if self.rownumber: 
     result = self._rows[self.rownumber:] <<------- 
    else: 
     result = self._rows 
    self.rownumber = len(self._rows) 
    return result 
関連する問題