Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python cx_oracle在存储为数据帧时挂起?_Python_Oracle_Pandas - Fatal编程技术网

python cx_oracle在存储为数据帧时挂起?

python cx_oracle在存储为数据帧时挂起?,python,oracle,pandas,Python,Oracle,Pandas,我试图将Oracle SQL查询的结果存储到一个数据帧中,执行会无限挂起。但是,当我打印查询时,它会立即显示出来。将此保存为数据帧时,是什么导致错误 import cx_Oracle import pandas as pd dsn_tns = cx_Oracle.makedsn('HOST', 'PORT', service_name='SID') conn = cx_Oracle.connect(user='USER', password='PASSWORD', dsn=dsn_tns) cu

我试图将Oracle SQL查询的结果存储到一个数据帧中,执行会无限挂起。但是,当我打印查询时,它会立即显示出来。将此保存为数据帧时,是什么导致错误

import cx_Oracle
import pandas as pd
dsn_tns = cx_Oracle.makedsn('HOST', 'PORT', service_name='SID')
conn = cx_Oracle.connect(user='USER', password='PASSWORD', dsn=dsn_tns)
curr =conn.cursor()
curr.execute('alter session set current_schema= apps')
df = pd.read_sql('select * from TABLE', curr)
####THE ALTERNATIVE CODE TO PRINT THE RESULTS
# curr.execute('select * from TABLE')
# for line in curr:
#     print(line)
curr.close()
conn.close()
Pandas的con参数需要一个连接对象,而不是游标的
execute
结果。此外,考虑使用大熊猫和数据库之间的推荐接口,在其中定义引擎连接分配中的模式。此引擎还允许调用

正如上面提到的,在Oracle中,用户和模式本质上是相同的(与其他RBDM不同)。因此,请尝试在
create\u engine
call中以用户身份传递应用程序,并提供所需的凭据:

engine = create_engine("oracle+cx_oracle://apps:PASSWORD@HOST:PORT/SID")

df = pd.read_sql('select * from TABLE', con=engine)

engine.dispose()
engine = create_engine("oracle+cx_oracle://apps:PASSWORD@HOST:PORT/SID")

df = pd.read_sql('select * from TABLE', con=engine)

engine.dispose()