python - 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)
解决方案
错误很明显:
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 是拥有该表的架构。如果您不想更改最后一部分,则需要创建一个同义词。
推荐阅读
- javascript - 每次单击按钮时如何更改颜色?
- data-structures - 堆栈图是否需要 n 个正方形空间?
- python - ValueError:层顺序的输入0与层不兼容:预期轴-1
- javascript - 在 jQuery DataTables 中找不到结果时的 ExportOptions 问题
- autodesk-forge - 如何将 MiniMap3DExtension 与 IFC 文件一起使用?
- git - 如何在 git 子模块中配置 tsconfig 文件?#forTsChecker
- android - 如何在android中的视图上添加玻璃效果?
- apache-spark - SAP DBTech JDBC:[288](在 22):不能使用重复的表名:
- asciidoc - 在选中的父项下缩进子项?
- sql - datepart 函数不考虑更新日期