Получение 2013 потерял соединение ошибка при попытке подключиться к MySQL с Python

Я пытаюсь подключиться к базе данных mysql, чтобы получить какой-то идентификатор для некоторых пользователей, и использовать этот идентификатор для получения другого набора данных из другой таблицы. Это должно быть легко, но я получаю ошибки MySQL. Вот фрагмент того, что я пытаюсь сделать.

import MySQLdb
from langdetect import detect

my_db = MySQLdb.connect(
                    host="localhost", 
                    port = 3306,
                    user="user", 
                    passwd="password",
                    db="mydb",
                    charset = 'utf8'
                    )

sql1 = """SELECT id, comment FROM users WHERE usertype = 5 LIMIT 100"""

users = []
db_cursor = my_db.cursor()
db_cursor.execute(sql1)
users = db_cursor.fetchall()

sql2 = """SELECT first_name, last_name, email FROM user_contact WHERE id = %s"""

user_contact =[]
for user in users:
    comment = user[1]
    if detect(comment) == 'en': 
        id = user[0]
        db_cursor = my_db.cursor()
        db_cursor.execute(sql2, (id))
        temp = db_cursor.fetchall()
        user_contact . append (temp)

print (user_contact)

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

_mysql_exceptions.OperationalError: (2013, 'Lost connection to MySQL server during query')

Первая часть запроса, как правило, проходит, но обычно происходит сбой при попытке снова подключиться к mysql для второй части. Я протестировал всего 100 записей, чтобы убедиться, что это проблема с слишком длинным запросом, но он остается прежним даже с 10 записями.

1 ответ

Для вашей второй части, вы можете не выполнить sql;)

Попробуй поменять

for user in users:
    comment = user[1]
    if detect(comment) == 'en': 
        id = user[0]
        db_cursor = my_db.cursor()
        temp = db_cursor.fetchall()
        user_contact . append (temp)

в

for user in users:
    comment = user[1]
    if detect(comment) == 'en': 
        id = user[0]
        db_cursor = my_db.cursor()
        db_cursor.execute(sql1, (id))
        temp = db_cursor.fetchall()
        user_contact . append (temp)
Другие вопросы по тегам