Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Oracle покорится удаву, или не по клыкам?))


Автор: proDiva 13.10.2006, 16:01
Ну вот теперь можно обсуждать конкретный вопрос, а то начала ту, слишком обширную тему. 
В общем, парни, если питон еще и с нашей базой соединиться сможет (на оракле), всем вышлю пиво по почте smile

Автор: @lex 13.10.2006, 16:44
http://www.python.org/topics/database/modules.html
+ к тому же уж Oracle наверняка ODBC поддерживает 

Автор: Artemios 13.10.2006, 16:58
Таки всем??? smile

Автор: proDiva 14.10.2006, 18:06
Цитата(Artemios @  13.10.2006,  16:58 Найти цитируемый пост)
Таки всем??? 

Не вопрос)).... только дойдет оно вряд ли свежим, может мне денежный перевод отправить.... на пиво? smile  как никак я банковский работник)) Так, не отвлекайтесь, мы еще не подключились к Ораклу, чтобы пиво обсуждать)))

Автор: slivlen 15.10.2006, 12:15
Код

import cx_Oracle

dsn = cx_Oracle.makedsn('host', 'db_port', 'dbname')
conn = cx_Oracle.connect('user', 'passwd', dsn)

Автор: pythonwin 16.10.2006, 07:56
slivlen, а где можно скачать пакет cx_Oracle? smile

Автор: proDiva 16.10.2006, 09:38
я извиняюсь, но у меня ни хрена не получается smile 
Код

# -*- coding: cp1251 -*-
import dbi
import odbc

source = '???' #название ODBC источника
table = 'od.accref' # название таблицы

def extractor(table):
    myconn = odbc.odbc(source)
    mycursor = myconn.cursor()
    mycursor.execute("select accnumb, opdate from accref where accref.accnumb='40817810600010000155';")
    mydata = mycursor.fetchall()
    mycursor.close()
    for i in range(0, len(mydata)):
        print " | ".join(i)

extractor(table)

нашла простенький примерчик, но никак не могу правильно записать ODBC-источник((
причем модуль odbc.py запрашивает модуль windll.py, которого у меня нет

Автор: slivlen 16.10.2006, 10:06
Цитата(pythonwin @  16.10.2006,  07:56 Найти цитируемый пост)
slivlen, а где можно скачать пакет cx_Oracle? smile

http://www.cxtools.net/default.aspx?nav=cxorlb

Автор: Vach 16.10.2006, 13:46
Посмотри по теме "http://www.opennet.ru/base/dev/python_dba.txt.html"

Автор: proDiva 16.10.2006, 14:23
Код

import mx.ODBC.Windows as odbc

driv='DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:/db2.mdb'
conn = odbc.DriverConnect(driv)
c = conn.cursor()
c.execute ("select * from accref")

Парни, как правильно сложить строку подключения к ораклу, если у меня есть: AliasName, DBLogin, DBPassword, HOSTNAME, HOSTUSER, HOSTPASSWORD?

Автор: dvska 16.10.2006, 18:05
Цитата(proDiva @ 16.10.2006,  14:23)
Код

import mx.ODBC.Windows as odbc

driv='DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:/db2.mdb'
conn = odbc.DriverConnect(driv)
c = conn.cursor()
c.execute ("select * from accref")
  • этот кусок работает?
  • odbc-соединение с Ораклом настроено (может понадобиться установка Оракловского клиента) и проверено (дёргать админа если что не получается)?
если ответ "Да" на оба вопроса --

мне кажется, должно работать так:
Код

# -*- coding: windows-1251 -*-
import mx.ODBC.Windows as odbc

conn = odbc.connect(dsn=AliasName, user=DBLogin, password=DBPassword)
# или так:  conn = odbc.DriverConnect('DSN=AliasName;UID=DBLogin;PWD=DBPassword')
cur = conn.cursor()
cur.execute('Select col1, col2 from YourTable')
data=cur.fetchall()

# Парни, как правильно сложить строку подключения к ораклу,
# если у меня есть: AliasName, DBLogin, DBPassword, HOSTNAME, HOSTUSER, HOSTPASSWORD?


Автор: proDiva 17.10.2006, 08:30
dvska, жаль, что ты не видишь, как я танцую вокруг компьютера smile  Подключение работает!!! Ну что, парни, становимся в очередь за пивом? smile 

Автор: pythonwin 17.10.2006, 08:47
dvska, от ProDiv-ы: за помощь с кодом питона для работы с Oracle +1 smile

Автор: diam 17.10.2006, 09:11
Через ODBC будет медленно работать. Вариант, предложенный slivlen, прекрасно пахал у меня на протяжении года. Правда, что-то у него слишком просто подключение делается.
Посмотрю, как было у меня, выложу.

Автор: proDiva 17.10.2006, 09:17
Цитата(diam @  17.10.2006,  09:11 Найти цитируемый пост)
Вариант, предложенный slivlen, прекрасно пахал у меня на протяжении года.

Предложенный им модуль работает с Ораклом начиная с 9-й версии........ у нас оракл 8, поэтому я не смогла проверить этот метод.

Добавлено @ 09:22 
Еще вопрос: команда execute выполняет любые стандартные sql-команды (которые применимы к ораклу)?

Автор: pythonwin 17.10.2006, 09:23
Цитата(diam @  17.10.2006,  16:11 Найти цитируемый пост)
Посмотрю, как было у меня, выложу. 

было бы интересно посмотреть smile

Автор: diam 17.10.2006, 09:29
Цитата(proDiva @  17.10.2006,  12:17 Найти цитируемый пост)
Предложенный им модуль работает с Ораклом начиная с 9-й версии........ у нас оракл 8, поэтому я не смогла проверить этот метод. 

А, вон оно что. Ну, в принципе, это критично только при добавлении/извлечении большого объёма данных. Для этих целей (если очень нужно), можно и C-ишный интерфейс пользовать.

Добавлено @ 09:29 
Цитата(pythonwin @  17.10.2006,  12:23 Найти цитируемый пост)
было бы интересно посмотреть smile 

Хорошо, значит, актуально )

Автор: Artemios 17.10.2006, 09:58
Цитата(proDiva @  17.10.2006,  09:17 Найти цитируемый пост)
Еще вопрос: команда execute выполняет любые стандартные sql-команды

Вроде да.

Автор: diam 17.10.2006, 12:28
Код

ORACLE_HOME = '/oracle/product/10.1.0/db_1'
NLS_LANG  = 'RUSSIAN.CL8MSWIN1251'

import cx_Oracle

os.environ['ORACLE_HOME'] = ORACLE_HOME
os.environ['NLS_LANG'] = NLS_LANG

oraconn = cx_Oracle.connect(USER + '/' + PASSWORD)
oracurs = oraconn.cursor()


Вот только nls-записей у меня не осталось. Гы-хы-мы. А в них и была самая соль (я с ними больше всего возился). Так что извиняйте.

Автор: slivlen 17.10.2006, 12:29
Цитата(diam @  17.10.2006,  09:11 Найти цитируемый пост)
Правда, что-то у него слишком просто подключение делается.

Так делается подключение в бекенде django для oracle.

Автор: pythonwin 17.10.2006, 12:34
Цитата(slivlen @  17.10.2006,  19:29 Найти цитируемый пост)

Так делается подключение в бекенде django для oracle.

django может работать с ораклом?

Автор: slivlen 17.10.2006, 14:45
Цитата(pythonwin @  17.10.2006,  12:34 Найти цитируемый пост)
django может работать с ораклом?

Да.

Автор: pythonwin 17.10.2006, 14:52
Цитата(slivlen @  17.10.2006,  21:45 Найти цитируемый пост)
Да. 

а TG?

Автор: slivlen 17.10.2006, 15:11
Цитата(pythonwin @  17.10.2006,  14:52 Найти цитируемый пост)
а TG? 

Если с sqlalchemy, то поддерживает.
Если с SQLObject, то похоже что нет(хотя trunk с поддержкой oracle в svn есть, так что мож скоро и появится).

Автор: pythonwin 17.10.2006, 15:23
Цитата(slivlen @  17.10.2006,  22:11 Найти цитируемый пост)

Если с sqlalchemy, то поддерживает.
Если с SQLObject, то похоже что нет(хотя trunk с поддержкой oracle в svn есть, так что мож скоро и появится). 

спасибо! 
а пример дать сможешь? smile

Автор: slivlen 17.10.2006, 15:46
Цитата(pythonwin @  17.10.2006,  15:23 Найти цитируемый пост)
а пример дать сможешь? smile 

А какие примеры нужны? Есть довольно подробная документация по SA: http://www.sqlalchemy.org/docs/.  Пример подключения к oracle есть здесь: http://www.sqlalchemy.org/docs/dbengine.myt#dbengine_supported.

Автор: pythonwin 17.10.2006, 15:48
Цитата(slivlen @  17.10.2006,  22:46 Найти цитируемый пост)

А какие примеры нужны? Есть довольно подробная документация по SA: http://www.sqlalchemy.org/docs/.  Пример подключения к oracle есть здесь: http://www.sqlalchemy.org/docs/dbengine.my...ngine_supported.

спасибо! +1 smile

Автор: proDiva 18.10.2006, 13:29
Этот вопрос поверхностно изучили smile  Пока закрываю, если будет необходимость, откроем снова))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)