объект получения не может быть подписан в MySQL connector

#python #mysql #mysql-connector

Вопрос:

У меня есть программа на python, в которой я хочу обновить сведения с помощью mysqlconnector в своей базе данных, но я получаю

 Traceback (most recent call last):
  File "d:devided githubrepo_data.py", line 116, in <module>
    getRepos()
  File "d:devided githubrepo_data.py", line 101, in getRepos
    for repo in cursor:
  File "C:Python39libsite-packagesmysqlconnectorcursor_cext.py", line 718, in fetchone
    return self._fetch_row()
  File "C:Python39libsite-packagesmysqlconnectorcursor_cext.py", line 689, in _fetch_row
    row = self._rows[self._next_row]
TypeError: 'NoneType' object is not subscriptable
 

мой код

 def getRepos():
    cursor.execute("select repo_name,github_id from user_repo WHERE Processed = 'N'")
    
    for repo in cursor:
        username = repo[1]
        repo_name = repo[0]
        total_commit = total_commit_fetch_web_scrap(repo_name, username)
        total_commit_user = total_commit_user_func(repo_name, username)
        total_contributors = total_contributors_func(repo_name, username)
        language_dict = {}
        fetch_language(username, repo_name, language_dict)
        
        sql = 'UPDATE user_repo SET contributors=%s, total_commits=%s, commit_by_user=%s, language_1=%s, language_2=%s, language_3=%s, language_4=%s, language_5=%s, language_6=%s, language_7=%s WHERE repo_name=%s AND github_id=%s;'
        val = (total_contributors, total_commit, total_commit_user, language_dict['languages1'], language_dict['languages2'], language_dict['languages3'], language_dict['languages4'], language_dict['languages5'], language_dict['languages6'], language_dict['languages7'], repo_name, username)
        cursor.execute(sql,val)
    connection.commit()
 

курсор находится

 cursor = connection.cursor(buffered=True)
 

Комментарии:

1. Можете ли вы поделиться содержимым переменной «sql»? Попробуйте распечатать его перед выполнением, тогда вы, вероятно, увидите, что не так.

2. @Culme я обновил вопрос, я отформатировал запрос, теперь я получаю другую ошибку, пожалуйста, проверьте.

3. Если вы просто выполните печать(sql) перед попыткой выполнить sql, это все равно может очень помочь. Это могут быть отсутствующие кавычки или что-то в этом роде, гораздо легче определить, разделяете ли вы полное значение «sql».

4. @Culme print, по-моему, выглядит нормально.

5. @Culme есть какая-то ошибка, cursor.execute потому что я попытался удалить ее, а затем запустить, и это сработало, я не получал ошибку, но cursor.execute это важно для базы данных, поэтому я не могу ее удалить. что я должен делать, какие-либо предложения.