首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy和Oracle12c连接问题

SQLAlchemy和Oracle12c连接问题
EN

Stack Overflow用户
提问于 2016-10-12 17:40:06
回答 1查看 1.6K关注 0票数 2

我在Python3.5上使用SQLAlchemy核心(1.0.12)来连接我的组织的Oracle数据库。直到我的组织将Oracle数据库从11g升级到12c之前,我的数据库脚本才能正常工作。升级之后,当试图将数据插入现有表时,通常会遇到下面的错误。

代码语言:javascript
复制
sqlalchemy.exc.OperationalError: (cx_Oracle.OperationalError) ORA-03135: connection lost contact
Process ID: 10355
Session ID: 184 Serial number: 60376

在升级期间,我没有更改任何SQLAlchemy脚本,并且错误并不总是发生,通常只有在尝试插入大型数据集时才会发生错误。我已经研究了与ORA-03135错误代码相关的问题,并确认我没有遇到任何防火墙问题(有时我能够连接)或超时(错误提示在几秒钟内出现,这对超时来说太快了)。

有没有其他人有过这个问题,并找到了解决办法?

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\ross\repository\Analytics\OptTekSQL\run.py", line 5, in <module>
'Demand Analysis 8/17/16')
  File "C:\ross\repository\Analytics\OptTekSQL\optsql\data_load.py", line 43, in demand_output_load
s.insert_df(df, 'ACCDC_DEMAND_OUTPUTS')
  File "C:\ross\repository\Analytics\OptTekSQL\optsql\base.py", line 38, in insert_df
self.eng.connect().execute(ins, data)
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 914, in execute
return meth(self, multiparams, params)
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\sql\elements.py", line 323, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1010, in _execute_clauseelement
compiled_sql, distilled_params
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1146, in _execute_context
context)
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1341, in _handle_dbapi_exception
exc_info
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\util\compat.py", line 200, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\util\compat.py", line 183, in reraise
raise value.with_traceback(tb)
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1116, in _execute_context
context)
  File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\dialects\oracle\cx_oracle.py", line 964, in do_executemany
cursor.executemany(statement, parameters)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-15 17:38:00

我们遇到了这个确切的问题,下面的解决方法防止了错误:

在oracle数据库服务器上,向sqlnet.ora文件添加参数(使用大量数据,如下面所示,以防止超时):

代码语言:javascript
复制
SQLNET.SEND_TIMEOUT=600000

还在客户机的sqlnet.ora上添加相同的参数,通过python连接到数据库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40005001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档