我正在尝试用 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 http://sqlalche.me/e/4xp6)
知道问题是什么吗? sqlalchemy不是只使用cx_Oracle吗?是否有任何解决方法可以将 cx_Oracle 连接提供给 sqlalchemy?
Per the doc http://docs.sqlalchemy.org/en/latest/dialects/oracle.html#dialect-oracle-cx_oracle-connect,您的 Oracle 连接字符串与 SQLAlchemy 的格式应该是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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)