Python проверяет имя пользователя / пароли Oracle без использования cx_Oracle - PullRequest
2 голосов
/ 06 апреля 2011

Мне нужно проверить правильность предоставленных пользователем данных для учетной записи оракула. Я пытался использовать cx_Oracle, но версия OCI.DLL, которая находится на моих серверах (которую я не могу обновить), кажется, не является верной версией для cx_Oracle.

Как я могу проверить имя пользователя / пароль без использования cx_Oracle?

Ответы [ 3 ]

3 голосов
/ 11 апреля 2011

Если вы не можете скомпилировать cx_Oracle, у вас есть два варианта:

  • использовать ODBC (например, PyODBC );
  • использовать подпроцесс для взаимодействия с sqlplus.
1 голос
/ 11 апреля 2011

Если у вас есть доступ к хэшам имени пользователя и пароля через некоторые альтернативные средства, для которых не требуется cx_Oracle, и вам просто нужно проверить хэши паролей, библиотека Python Passlib может помочь.Он поддерживает форматы oracle10g и oracle11g .

1 голос
/ 11 апреля 2011

Проблема, скорее всего, в версии вашего модуля cx_Oracle.

При установке модуля вы должны быть чрезвычайно осторожны, чтобы выбрать подходящую версию для вашей установки Oracle.

http://cx -oracle.sourceforge.net /

Если вы не можете подключиться к базе данных с помощью cx_Oracle, вам может быть сложно проверить точность информации

Если у вас установлен sql * plus, вы можете попробовать запуститьобработайте с использованием модуля подпроцесс и проверьте, можете ли вы подключиться, но, на мой взгляд, вам лучше исправить cx_Oracle

Edit: Имеется в виду модуль подпроцесса.

Вот как это можно сделать с помощью подпроцесса:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...