Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Базы данных
  • » Отдать питоновский список, а в ответ получить выборку строк и базы данных [RSS Feed]

#1 Авг. 13, 2012 11:28:21

tfox
Зарегистрирован: 2012-04-13
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Отдать питоновский список, а в ответ получить выборку строк и базы данных

Выбрать одну строчку из таблицы получается, а вот множество строк нет. Вот примерно такой код набросал.

# модуль для работы с ораклом
import cx_Oracle
#
# осуществляем соединение с базой данных
conn = cx_Oracle.connect('user/password@database')
# создаем объект курсора
cur = conn.cursor()
#
# список id'шников строк которые нужно извлечь
python_list = [1, 2, 3]
#
# укажем тип переменной var как число
cur.setinputsizes(var = cx_Oracle.NUMBER)
#
# извлечь результаты из таблицы
cur.execute('select fid, big from example where fid in :var', var = python_list)
#
# выводим долгожданную выборку на экран
for (fid, big) in cur:
    print fid, big
#
# закрываем курсор
cur.close()
#
# закрываем сессию с базой данных
conn.close()

Выдает ошибку: cx_Oracle.DatabaseError: ORA-01484: arrays can only be bound to PL/SQL statements
Как это победить? Необходимо простейшим способом достать строки по заданному списку

Отредактировано tfox (Авг. 13, 2012 11:30:09)

Офлайн

#2 Авг. 13, 2012 13:51:04

adw0rd
От: Санкт-Петербург
Зарегистрирован: 2012-07-28
Сообщения: 107
Репутация: +  8  -
Профиль   Отправить e-mail  

Отдать питоновский список, а в ответ получить выборку строк и базы данных

Может?

for (fid, big) in cur.fetchall():
    print fid, big




Python, Django, Flask, Git, Emacs, Nginx, MySQL, SphinxSearch, Redis, Linux, FreeBSD
Мой блог, я на GitHub

Офлайн

#3 Авг. 13, 2012 14:17:49

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Отдать питоновский список, а в ответ получить выборку строк и базы данных

arrays can only be bound to PL/SQL statements

Как написано в матюгальнике, Вы не можете привязать список python_list к переменной в запросе var. Так что самый простой способ - формировать запрос руками, примерно так:

query = 'select fid, big from example where fid in (%s)' % ','.join(str(x) for x in python_list)



Офлайн

#4 Авг. 13, 2012 21:15:04

tfox
Зарегистрирован: 2012-04-13
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Отдать питоновский список, а в ответ получить выборку строк и базы данных

ziro, спасибо

Офлайн

  • Начало
  • » Базы данных
  • » Отдать питоновский список, а в ответ получить выборку строк и базы данных[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version