[英]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.