![](/img/trans.png)
[英]wfastcgi fails import cx_Oracle, but `python -c “import cx_Oracle” succeeds
[英]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.