簡體   English   中英

CX_Oracle - 從 Oracle 導入數據到 Pandas dataframe

[英]CX_Oracle - import data from Oracle in a specific schema to Pandas dataframe

當我檢查這個問題時,我不明白為什么該解決方案對我不起作用。 我運行以下代碼:

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 將表上的 select 授予您的用戶。

此外,您必須更改:

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 是擁有該表的架構。 如果您不想更改最后一部分,則需要創建一個同義詞。

答案是使用光標選擇正確的模式,工作代碼如下所示:

db_connection_string = 'User/pw@server:port/Name'
con = cx_Oracle.connect(db_connection_string)
con.current_schema = 'DATENBASIS'
query = """SELECT* 
           FROM TRANSACTION
           """
df_ora = pd.read_sql(query, con=connection)

檢查您是否可以從 SQL plus/SQL 開發人員中的表中檢查 select,如果不能,則您用於連接數據庫的用戶 ID 沒有訪問該表的權限。

SELECT *來自數據基礎.交易;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM