首页 > 解决方案 > CX_Oracle - 将特定模式中的 Oracle 数据导入 Pandas 数据框

问题描述

当我检查这个问题时,我不明白为什么该解决方案对我不起作用。我运行以下代码:

query = """SELECT* 
           FROM TRANSACTION
           """
df_ora = pd.read_sql(query, con=connection)

并得到错误: DatabaseError: ORA-00942: table or view does not exist

该数据库以 shemes 组织,其中 Datenbasis 是一种方案。所以它看起来像下面这样:数据库--->数据基础->表->事务

我在这里想念什么,我必须指定什么?

我的连接如下:

db_connection_string = 'User/pw@server:port/Name'
con = cx_Oracle.connect(db_connection_string)

标签: pythonpandasoracle

解决方案


错误很明显:

1.您正在连接的用户对表没有权限。2.表根本不存在。

db_connection_string = 'User/pw@server:port/Name'

您必须要求您的 DBA 将选择表授予您的用户。

此外,您必须更改:

query = """SELECT* 
           FROM TRANSACTION
           """
df_ora = pd.read_sql(query, con=connection)

为了

query = """SELECT* 
           FROM SCHEMA_OWNER.TRANSACTION
           """
df_ora = pd.read_sql(query, con=connection)

其中 schema_owner 是拥有该表的架构。如果您不想更改最后一部分,则需要创建一个同义词。


推荐阅读