django.db.utils.InterfaceError:(0,'')

时间:2018-11-08 08:18:53

标签: python mysql django pymysql

我最近在正在开发的工具中实现了django。在进行一些测试时,我得到了django.db.utils.InterfaceError:(0,'')错误。 我已经读到它可能是全局游标问题,但是我只通过django进行查询,让它处理游标。

基本上,我掌握了有关化合物的信息,这些信息在工具执行过程中会保存到mySQL中。

这段特定的代码将执行几次(到目前为止似乎还不错),然后在执行结束时执行最后一次(全局保存)。正是在这种全局保存下,我才遇到上述错误。 此全局保存仅遍历所有收集的化合物并将其保存。

关于如何解决此错误的任何想法?

def save_to_SQL_db(self):
    #####COMPOUND#####
    if not self.sql_key:
        cpd_django=Compound_db(cpd_level=self.get_cpd_level(),\
                               chemical_formula=self.get_Chemical_formula(),\
                               smiles=self.get_SMILES())
    else:
        cpd_django=Compound_db.objects.get(pk=self.sql_key)
        cpd_django.cpd_level=self.get_cpd_level()
        cpd_django.chemical_formula=self.get_Chemical_formula()
        cpd_django.smiles=self.get_SMILES()
    cpd_django.save()

错误:

  

回溯(最近通话最近):文件   “ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ utils.py”,   _execute中的第85行       返回self.cursor.execute(sql,params)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ mysql \ base.py”,   第71行,执行       返回self.cursor.execute(query,args)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ cursors.py”,   执行中的第170行       结果= self._query(查询)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ cursors.py”,   _query中的第328行       conn.query(q)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ connections.py”,   第515行,在查询中       self._execute_command(COMMAND.COM_QUERY,sql)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ connections.py”,   _execute_command中的第745行       引发err.InterfaceError(“(0,'')”)pymysql.err.InterfaceError:(0,))

     

上述异常是以下异常的直接原因:

     

回溯(最近通话最近):文件   在第1900行中的“ MyProject / Query.py”      文件   在“ MyProject / Query.py”行1803中   multiple_query文件   第1836行的“ MyProject / Query.py”在   single_query文件   在“ MyProject / Query.py”中的第1563行   query_all_databases       self.database_saving_all()文件“ MyProject / Query.py”,第243行,在   database_saving_all       self.database_saving_mets()文件“ MyProject / Query.py”,第519行,在   database_saving_mets       met.save_to_SQL_db()文件“ MyProject \ Compound.py”,行829,   在save_to_SQL_db中       else:文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ models \ manager.py”,   第82行,在manager_method中       返回getattr(self.get_queryset(),name)(* args,** kwargs)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ models \ query.py ”,   393行,进入       num = len(clone)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ models \ query.py”,   第250行, len       self._fetch_all()文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ models \ query.py”,   _fetch_all中的第1186行       self._result_cache = list(self._iterable_class(s​​elf))文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ models \ query.py”,   第54行,位于 iter       结果= editor.execute_sql(chunked_fetch = self.chunked_fetch,chunk_size = self.chunk_size)文件   “ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ models \ sql \ compiler.py”,   第1065行,在execute_sql中       cursor.execute(sql,params)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ utils.py”,   第100行,在执行中       返回super()。execute(sql,params)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ utils.py”,   第68行,执行       返回self._execute_with_wrappers(sql,params,many = False,executor = self._execute)文件   “ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ utils.py”,   第77行,在_execute_with_wrappers中       返回执行程序(sql,params,许多,上下文)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ utils.py”,   _execute中的第85行       返回self.cursor.execute(sql,params)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ utils.py”,   第89行,退出       从exc_value文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ utils.py”中提高dj_exc_value.with_traceback(traceback),   _execute中的第85行       返回self.cursor.execute(sql,params)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ mysql \ base.py”,   第71行,执行       返回self.cursor.execute(query,args)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ cursors.py”,   执行中的第170行       结果= self._query(查询)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ cursors.py”,   _query中的第328行       conn.query(q)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ connections.py”,   第515行,在查询中       self._execute_command(COMMAND.COM_QUERY,sql)文件“ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pymysql \ connections.py”,   _execute_command中的第745行       提高err.InterfaceError(“(0,'')”)django.db.utils.InterfaceError:(0,))

1 个答案:

答案 0 :(得分:0)

我知道,这不是最佳答案,但是对我来说,尝试关闭3次连接,然后再次重新连接是可行的。

 try:
     connections.close_all()
 except:
     try:
         connections.close_all()
     except:
         try:
             connections.close_all()
         except:
             pass

还尝试在settings.py中将CONN_MAX_AGE设置为None,但这不起作用。