尝试使用Python连接到mysql时,2013年丢失了连接错误

时间:2016-05-13 03:25:37

标签: python mysql mysql-error-2013

我正在尝试连接到mysql数据库以检索某些用户的某些ID,并使用这些id从另一个表中检索另一组数据。它应该很容易,但我收到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 个答案:

答案 0 :(得分:0)

对于你的第二部分,你可能不会执行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)