django.db.utils.InterfaceError:(0,'') [英] django.db.utils.InterfaceError: (0, '')

查看:129
本文介绍了django.db.utils.InterfaceError:(0,'')的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've recently implemented django in a tool I'm developing. While doing some tests I have been getting an django.db.utils.InterfaceError: (0, '') error. I have read that it might be a global cursor issue, however I am only doing queries through django, letting it handle the cursors.

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

Basically I have information about compounds which, I save to mySQL during several moments of the tool execution.

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

This particular piece of code will execute several times (which seems to work fine so far) and will then execute one final time in the end of the execution ( a global save). It is in this global save that I am getting the aforementioned error. This global save just iterates over all collected compounds and saves them.

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

Any ideas on what I can do to solve this error?

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,))

Traceback (most recent call last): File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py", line 85, in _execute return self.cursor.execute(sql, params) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\mysql\base.py", line 71, in execute return self.cursor.execute(query, args) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\cursors.py", line 170, in execute result = self._query(query) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\cursors.py", line 328, in _query conn.query(q) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py", line 515, in query self._execute_command(COMMAND.COM_QUERY, sql) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py", line 745, in _execute_command raise err.InterfaceError("(0, '')") pymysql.err.InterfaceError: (0, '')

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

The above exception was the direct cause of the following exception:

回溯(最近通话最近):文件第1900行中的"MyProject/Query.py"文件在"MyProject/Query.py"行1803中multiple_query文件第1836行的"MyProject/Query.py"在single_query文件在"MyProject/Query.py"中的第1563行query_all_databasesself.database_saving_all()文件"MyProject/Query.py",第243行,在database_saving_allself.database_saving_mets()文件"MyProject/Query.py",第519行,在database_saving_metsmet.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",_execute_with_wrappers中的第77行返回执行程序(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,))

Traceback (most recent call last): File "MyProject/Query.py", line 1900, in File "MyProject/Query.py", line 1803, in multiple_query File "MyProject/Query.py", line 1836, in single_query File "MyProject/Query.py", line 1563, in query_all_databases self.database_saving_all() File "MyProject/Query.py", line 243, in database_saving_all self.database_saving_mets() File "MyProject/Query.py", line 519, in database_saving_mets met.save_to_SQL_db() File "MyProject\Compound.py", line 829, in save_to_SQL_db else: File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\manager.py", line 82, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py", line 393, in get num = len(clone) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py", line 250, in len self._fetch_all() File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py", line 1186, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py", line 54, in iter results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py", line 1065, in execute_sql cursor.execute(sql, params) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py", line 100, in execute return super().execute(sql, params) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py", line 68, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers return executor(sql, params, many, context) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py", line 85, in _execute return self.cursor.execute(sql, params) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\utils.py", line 89, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py", line 85, in _execute return self.cursor.execute(sql, params) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\mysql\base.py", line 71, in execute return self.cursor.execute(query, args) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\cursors.py", line 170, in execute result = self._query(query) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\cursors.py", line 328, in _query conn.query(q) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py", line 515, in query self._execute_command(COMMAND.COM_QUERY, sql) File "user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py", line 745, in _execute_command raise err.InterfaceError("(0, '')") django.db.utils.InterfaceError: (0, '')

推荐答案

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

I know, that this is not the optimal answer, but for me trying to close 3 times the connection, and then reconnecting again worked.

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

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

Also tried to set CONN_MAX_AGE to None in settings.py, but that did not work.

这篇关于django.db.utils.InterfaceError:(0,'')的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆