簡體   English   中英

使用 pyodbc 從 SQLAlchemy 連接到 Oracle 數據庫

[英]Connect to Oracle database from SQLAlchemy using pyodbc

我在 ODBC 驅動程序中設置了一個數據源名稱(DSN),並在查詢中提供了它。 我下面的代碼就像一個魅力。

import pyodbc as db
cnxn = db.connect('DSN=Oracle Prod DW;PWD=******')

我想為此創建一個 sqlalchemy 連接,但我失敗了。 我嘗試了不同的方法,但沒有奏效。 我只想提供密碼和 DSN。

Oracle方言+ ODBC 驅動似乎不被 SqlAlchemy 支持

https://docs.sqlalchemy.org/en/13/core/engines.html#oracle

在此處輸入圖像描述

只有在 Java 運行時,您顯然可以做到這一點

https://docs.sqlalchemy.org/en/13/dialects/oracle.html#module-sqlalchemy.dialects.ZA189C633D9995E11BF860717dbjc9A4B8Z.x

https://www.jython.org/jython-old-sites/archive/21/docs/zxjdbc.html

話雖如此

如果您有一個 oracle 客戶端安裝和正確的tnsnames設置

您可以執行以下操作

  1. 安裝 cx_Oracle

  2. 設置 tnsnames 即

    DEVDB= (DESCRIPTION = (ADDRESS =(PROTOCOL =TCP)(HOST =10.10.10.11)(PORT =1521)) (CONNECT_DATA = (SERVER =DEDICATED) (SERVICE_NAME =SVCDEV) ) )
  3. 代碼

    import sqlalchemy as alc from sqlalchemy.orm import sessionmaker import cx_Oracle import pandas as pd conn_str = 'oracle://DEVDB' engine = alc.create_engine(conn_str, echo=False) Session = sessionmaker(bind=engine) # YOU MIGHT NEED THIS sometimes # cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\x64\product\19.0.0\client_1\bin") sess = Session() result = sess.execute("select 'foo' from dual") df = pd.DataFrame(result.fetchall(), columns=result.keys()) print(df.to_string())

暫無
暫無

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

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