Найти - Пользователи
Полная версия: Отдать питоновский список, а в ответ получить выборку строк и базы данных
Начало » Базы данных » Отдать питоновский список, а в ответ получить выборку строк и базы данных
1
tfox
Выбрать одну строчку из таблицы получается, а вот множество строк нет. Вот примерно такой код набросал.

# модуль для работы с ораклом
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
Как это победить? Необходимо простейшим способом достать строки по заданному списку
adw0rd

Может?

for (fid, big) in cur.fetchall():
    print fid, big
ziro
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)
tfox
ziro, спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB