Неверный результат в Python MySQL Разъем - PullRequest
0 голосов
/ 26 апреля 2020

Я создаю приложение Python, которое взаимодействует с базой данных MySQL. После выполнения запроса SELECT * FROM privileges_groups я сталкиваюсь с этой ошибкой:

    mycursor.execute("SELECT * FROM privileges_groups")
  File "/usr/local/lib/python3.6/dist-packages/mysql/connector/cursor.py", line 551, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "/usr/local/lib/python3.6/dist-packages/mysql/connector/cursor.py", line 472, in _handle_result
    raise errors.InterfaceError('Invalid result')
mysql.connector.errors.InterfaceError: Invalid result

Это происходит только при определенных конкретных обстоятельствах c, но я не могу сузить его до того, что непосредственно вызывает его. Другие запросы выполняются до этого, но они кажутся успешными.

Код, в котором это происходит:

def GetPrivileges():
    """Gets list of privileges."""
    mycursor.execute("SELECT * FROM privileges_groups")
    priv = mycursor.fetchall()
    if len(priv) == 0:
        return []
    Privs = []
    for x in priv:
        Privs.append({
            "Id" : x[0],
            "Name" : x[1],
            "Priv" : x[2],
            "Colour" : x[3]
        })
    return Privs

Запросы выполнялись до него

def UserData(id):
    """Gets data for user. (specialised for user edit page)"""
    Data = GetUser(id)
    mycursor.execute("SELECT userpage_content, user_color, username_aka FROM users_stats WHERE id = %s LIMIT 1", (id,))# Req 1
    Data1 = mycursor.fetchall()
    if len(Data1) == 0:
        return False
    Data1 = Data1[0]
    mycursor.execute("SELECT email, register_datetime, privileges, notes, donor_expire, silence_end, silence_reason FROM users WHERE id = %s LIMIT 1", (id,))
    Data2 = mycursor.fetchall()[0]
    #Fetches the IP
    mycursor.execute("SELECT ip FROM ip_user WHERE userid = %s LIMIT 1", (id,))
    try:
        Ip = mycursor.fetchall()
        if len(Ip) == 0:
            Ip = "0.0.0.0"
        else:
            Ip = Ip[0][0]
    except Exception:
        Ip = "0.0.0.0"
    #gets privilege name
    mycursor.execute("SELECT name FROM privileges_groups WHERE privileges = %s LIMIT 1", (Data2[2],))
    PrivData = mycursor.fetchall()
    #rest of the code focuses on formatting the data from mysql

1 Ответ

0 голосов
/ 26 апреля 2020

Да, как я уже сказал, я не вижу ваш код.

но я думаю, что вы предварительно извлекли одну строку, а затем повторно использовали курсор.

вы можете поставить buffered в true!

mycursor = cnx.cursor(buffered=True)

Это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...