python mysql Commands out of sync相关的问题,pythoncommands,python 执行my


python 执行mysql 出现Commands out of sync; you can't run this command now
请问怎么解决啊
错误提示:
Exception mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") in <bound method DictCursor.__del_ of <MySQLdb.cursors.DictCursor object at 0x7f5ebc265050>> ignored

import json
import re
import traceback
import binascii
import time

from django.db import models
import MySQLdb as mdb
import MySQLdb.cursors

search_conn = mdb.connect('127.0.0.1', '**', '', '', port=9306, charset='utf8', cursorclass=MySQLdb.cursors.DictCursor)
search_conn.ping(True)
re_punctuations = re.compile(

ur"。|,|,|!|…|!|《|》|<|>|\"|'|:|:|?|\?|、|\||“|”|‘|’|;|\\|—|_|=|(|)|·|\(|\)| |\.|【|】|『|』|@|&|%|\^|\*|\+|\||<|>|~|`|\[|\]")

def get_conn():

return mdb.connect('127.0.0.1', '***', '', '', port=9306, charset='utf8', cursorclass=MySQLdb.cursors.DictCursor)

def escape_string(string):

return re.sub(r"(['`=\(\)|\-!@~\"&/\\\^\$])", r"\\\1", string)

def split_words(string):

string = re_punctuations.sub(u' ', string).replace(u'-', u' ')words = []for w in string.split():    try:        words.append(w.encode('ascii').decode('ascii'))    except:        for c in w:            words.append(c)return u'|'.join(words).strip(u'|')

class HashManager(models.Manager):

def search(self, keyword, start=0, count=10, category=None, sort=None):    search_cursor = search_conn.cursor()    sql = '''SELECT id FROM rt_main'''    conds = []    values = []    if keyword:        conds.append('MATCH(%s)')        values.append(escape_string(keyword))    if category:        conds.append('category=%s')        values.append(binascii.crc32(category)&0xFFFFFFFFL)    if conds:        sql += ' WHERE ' + ' AND '.join(conds)    if sort == 'create_time':        sql += ' ORDER BY create_time DESC '    elif sort == 'length':        sql += ' ORDER BY length DESC '    sql += '''        LIMIT %s,%s        OPTION max_matches=1000, max_query_time=200    '''    search_cursor.execute(sql, values + [start, count])    items = list(search_cursor.fetchall())    search_cursor.execute('SHOW META')    meta = {}    for d in search_cursor.fetchall():        meta[d['Variable_name']] = d['Value']    sql = '''SELECT category, COUNT(*) AS num FROM rt_main '''    if conds:        sql += ' WHERE ' + ' AND '.join(conds)    sql += ''' GROUP BY category OPTION max_query_time=200'''    search_cursor.execute(sql, values)    cats = list(search_cursor.fetchall())        res = {        'result': {            'items': items,            'meta': meta,        },        'cats': {            'items': cats,        },    }    search_cursor.close()    return resdef list_with_files(self, ids):    res = []    if len(ids[0]) == 40:        items = Hash.objects.filter(info_hash__in=ids).values()    else:        items = Hash.objects.filter(id__in=ids).values()    res = list(items)    items = FileList.objects.filter(info_hash__in=[x['info_hash'] for x in res]).values()    for x in res:        for y in items:            if x['info_hash'] == y['info_hash']:                try:                    x['files'] = json.loads(y['file_list'])                except ValueError:                    pass    items = Extra.objects.filter(hash_id__in=ids).values()    for x in res:        for y in items:            if x['id'] == y['hash_id']:                x['extra'] = y    return resdef list_related(self, hash_id, name, count=10):    string = split_words(name)    if not string:        return []    search_conn = get_conn()    search_cursor = search_conn.cursor()    try:        sql = '''SELECT id FROM rt_main WHERE MATCH(%s) AND id<>%s LIMIT 0,%s OPTION max_matches=1000, max_query_time=200'''        search_cursor.execute(sql, (string, hash_id, count))        ids = [x['id'] for x in search_cursor.fetchall()]        items = Hash.objects.only('name', 'length', 'create_time', 'id').filter(id__in=ids).values()    except:        traceback.print_exc()        items = []    search_cursor.close()    search_conn.close()    return items

这个是Mysql报的错,你分析一下自己的sql语句,看有没有什么问题

编橙之家文章,

评论关闭