使用非cx_Oracle验证Oracle用户名/密码的Python方法
我需要确认用户提供的Oracle账户信息是否正确。我尝试使用cx_Oracle这个工具,但我服务器上的OCI.DLL版本(我无法升级)似乎和cx_Oracle不兼容。
我该如何在不使用cx_Oracle的情况下验证用户名和密码呢?
3 个回答
1
这个问题很可能是因为你安装的cx_Oracle模块版本不对。
在安装这个模块的时候,你需要非常小心,确保选择和你安装的Oracle数据库相匹配的版本。
http://cx-oracle.sourceforge.net/
如果你无法通过cx_Oracle连接到数据库,那么你可能会很难检查信息的准确性。
如果你安装了sql*plus,可以尝试用subprocess模块启动一个进程,看看能否连接上,但我觉得修复cx_Oracle可能更有效。
编辑:这里指的是subprocess模块。
下面是如何使用subprocess模块的方法:
import subprocess
def is_login_valid(user, password, instance):
output = subprocess.check_output("sqlplus %s/%s@%s" %(user, password, instance))
return (output.find("ORA-01017") == -1 and output.find("ORA-12154") == -1)
3
如果你无法编译 cx_Oracle,有两个选择:
- 使用 ODBC(比如 PyODBC);
- 使用 subprocess 来和
sqlplus
进行交互。