簡體   English   中英

sqlalchemy無法連接,但cx_oracle成功

[英]sqlalchemy fails to connect but cx_oracle succeeds

我正在嘗試使用Python連接到Oracle服務器。 我可以在cx_Oracle中使用它,但是當我嘗試使用sqlalchemy連接時會失敗。 cx_Oracle代碼:

import cx_Oracle
import pandas as pd

cx_connection = cx_Oracle.connect(user+'/' + pw + '@' + host + ':' + port + '/' + db)
df = pd.read_sql(my_query, cx_connection)

根據查詢執行並從數據庫返回數據。 如果我嘗試使用sqlalchemy進行相同的連接:

import sqlalchemy

engine = sqlalchemy.create_engine('oracle+cx_oracle://' + user + ':' + pw + '@' + host + ':' + port + '/' + db)
sqlalchemy_connection = engine.connect()

我在最后一行收到錯誤:

DatabaseError:(cx_Oracle.DatabaseError)ORA-12505:TNS:listener當前不知道連接描述符中給出的SID(有關此錯誤的背景,位於: http : //sqlalche.me/e/4xp6

知道是什么問題嗎? sqlalchemy不只是使用cx_Oracle嗎? 有什么解決方法可以將cx_Oracle連接賦予sqlalchemy嗎?

根據文檔 ,使用SQLAlchemy的Oracle連接字符串的格式應為oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...] 但是根據您以前的連接字符串,db值實際上可能是TNS服務名稱,因此在這種情況下,您想使用

engine = sqlalchemy.create_engine('oracle+cx_oracle://' + user + ':' + pw + '@' + host + ':' + port + '/?service_name=' + db)

暫無
暫無

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

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