Доступ к базе данных Oracle через Python - PullRequest
0 голосов
/ 04 июня 2018

Я провел почти последние 48 часов, пробуя почти все доступные решения.Мой последний вариант:

  1. Я могу получить доступ к базе данных через разработчика Oracle SQL.

  2. Теперь я хочу вызывать запросы в python, используя pyodbc.Но я продолжаю получать эту ошибку:

Мой код выглядит так:

import pyodbc 
oracledriver = '{xyxzz}'
oracleuid = 'abcd'
oraclepwd = 'abcd'
oracleConn = pyodbc.connect(DRIVER=oracledriver, UID=oracleuid, PWD=oraclepwd, DBQ=oracledbq)

Ошибка:

<i> InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') <i>

Я думаю, что проблемас настройкой базы данных или как?Пожалуйста, помогите мне с возможными проблемами.Что-то на линии цанам?(может быть)

Редактировать: Когда я пытаюсь получить файл DSN:

, я получаю это всплывающее окно:

невозможно установить соединение с помощью файлаВведены параметры источника данных

Дополнительная информация: Вся информация, которую я имею:

<property name="URL" value="jdbc:oracle:thin:@abcd:1522/abcd" />
<property name="user" value="12345" />
<property name="password" value="12345" />

Я начал использовать другой подход с использованием sql alchemy.Похоже, работает.Но когда я пытаюсь выполнить запрос, я получаю сообщение об ошибке.Код и ошибка следующие:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
import cx_Oracle
engine = create_engine('oracle://user:pwdd@localhost:1521/dbname')
connection = engine.connect()
Session = scoped_session(sessionmaker(bind=engine))
s = Session()
result = s.execute('select * from strategy_group_decode;')

Ошибка:

DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: 64-битная клиентская библиотека Oracle не может быть загружена: "C: \ OraHome_2 \ oci.dll не является правильной архитектурой ".См. https://oracle.github.io/odpi/doc/installation.html#windows для справки (Справочная информация об этой ошибке на: http://sqlalche.me/e/4xp6)

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 августа 2019

@ Shariq

Вы также можете использовать драйвер cx_Oracle:

from sqlalchemy.engine import create_engine

DIALECT = 'oracle'
SQL_DRIVER = 'cx_oracle'
USERNAME = 'your_username' #enter your username
PASSWORD = 'your_password' #enter your password
HOST = 'subdomain.domain.tld' #enter the oracle db host url
PORT = 1521 # enter the oracle port number
SERVICE = 'your_oracle_service_name' # enter the oracle db service name
ENGINE_PATH_WIN_AUTH = DIALECT + '+' + SQL_DRIVER + '://' + USERNAME + ':' + PASSWORD +'@' + HOST + ':' + str(PORT) + '/?service_name=' + SERVICE

engine = create_engine(ENGINE_PATH_WIN_AUTH)


#test query
import pandas as pd
test_df = pd.read_sql_query('SELECT * FROM global_name', engine)
0 голосов
/ 04 июня 2018

Попробуйте это:

import pyodbc
connection = pyodbc.connect('DRIVER={oracledriver};SERVER=SQLSRV01;DATABASE=DATABASE;UID=oracleuid;PWD=oraclepwd')
cursor = connection.cursor()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...