Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 18.06.2017
Сообщений: 4

Ошибка типа данных при записи SQL запроса в файл

19.06.2017, 11:53. Показов 919. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def prepareSQL():
     con=odiRef.getJDBCConnection("SRC")
     sql='''select name from test'''
     sql=sql.decode('cp1251')
     return con.prepareStatement(sql)
     
 
prep = prepareSQL()
prep.execute()
p=prep.execute()
f=open("C:\Temp\droptab.txt","a")   
f.write(p)
f.close()
prep.close()
Выполняю в ODI код. При выполнении пишет ошибку TypeError: argument 1 must be string or read-only character buffer, not bool
по идее строка prep.execute() возвращает true и пытается использовать это в f.write(p) если изменить на f.write(str(p))
записует в файл текст true а нужно записывать результат запроса. Кто поможет, как изменить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.06.2017, 11:53
Ответы с готовыми решениями:

Ошибка преобразования типа данных при добавлении записи
Доброе время суток . Помогите найти решение проблемы: При добавлении новой профессии все попадает куда надо в таблицу и в поле со...

LINQ to SQL Ошибка при преобразовании типа данных nvarchar к float
Всем доброго времени суток! На сервере есть табличная функция function FunViewWarrantyPeriod() RETURNS @result table( per...

Ошибка при записи данных в файл
Для записи перменной типа string выделяю динамически массив из 64 элементов char,после записи данных освобождаю память,но почему-то при...

2
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
19.06.2017, 12:55
Цитата Сообщение от Romanovkrd Посмотреть сообщение
нужно записывать результат запроса.
execute у вас возвращает не результат, а объект который нужно проитерировать в цикле.
Либо можно вызвать на курсоре метод fetchall(), если такой метод есть в интерфейсе враппера к вашей БД.
fetchall возвращает результат запроса в виде списка кортежей (скорей всего) как в этом примере на python:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import jaydebeapi
import jaydebeapi
>>> conn = jaydebeapi.connect("org.hsqldb.jdbcDriver",
...                           "jdbc:hsqldb:mem:.",
...                           ["SA", ""],
...                           "/path/to/hsqldb.jar",)
>>> curs = conn.cursor()
>>> curs.execute('create table CUSTOMER'
...                '("CUST_ID" INTEGER not null,'
...                ' "NAME" VARCHAR not null,'
...                ' primary key ("CUST_ID"))'
...             )
>>> curs.execute("insert into CUSTOMER values (1, 'John')")
>>> curs.execute("select * from CUSTOMER")
>>> curs.fetchall()
[(1, u'John')]
>>> curs.close()
>>> conn.close()

Этот список можете сконвертировать в str и записать в файл.

P.S. И у вас ведь не python, а jython?
0
0 / 0 / 1
Регистрация: 18.06.2017
Сообщений: 4
19.06.2017, 17:58  [ТС]
Решил задачу так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def prepareSQL():
     con=odiRef.getJDBCConnection("SRC")
     sql='''<%=odiRef.getOption("zapis")%> '''
     return con.prepareStatement(sql)
     
 
prep = prepareSQL()
rs=prep.executeQuery()
f=open("C:\Temp\droptab4.txt","a")
while(rs.next()):
        data=rs.getString("OBJ_NAME")
        f.write(data +" \n")
f.close()
prep.close()
Осталось еще найти и вывести в этот же файл размер баз данных. я думаю как то так решить
Python
1
2
3
4
5
6
while(rs.next()):
        data=rs.getString("OBJ_NAME")
        s=os.path.getsize(data)
        f.write(data +" \n" + s)
f.close()
prep.close()
но возникает ошибка No such file or directory: 'c:\\Backup\\ODI_BACKUP\\C_T_TEMP. Чувствую по умолчанию путь в odi os.path стоит такой а как изменить все чтобы в файл писал размер каждой базы которую выбирает в цикле не могу догадаться. Кто знает?

Добавлено через 7 минут
Сейчас посмотрел os.path.getsize используется для поиска размера на лок компе. А как же найти размер таблицы в базе данных?

Добавлено через 13 минут
да jython. но я только его изучать начал и особо не соображаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2017, 17:58
Помогаю со студенческими работами здесь

Ошибка при записи данных в файл
Помогите пожалуйста!! Вот лог ошибки: java.lang.NullPointerException: Attempt to invoke interface method...

Ошибка при записи в файл данных из обьекта класса
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; using namespace std; class Vector { public: double x; ...

Ошибка при добавлении записи в БД MS SQL через SqlCommandBuilder без предварительной загрузки данных в DataTable
Доброго времени суток, уважаемые форумчане! Выполняю добавление записей в БД MS SQL через через SqlCommandBuilder. Столкнулся с...

Вставка данных из Excel в SQL. При помощи запроса SQL....
Доброго времени суток. Не могли бы Вы мне помочь с SQL запросом, которй вставлял бы весь лист в таблицу SQL? дело в том что мне...

Можно ли добавлять записи в связанные таблицы при помощи SQL-запроса
Я столкнулся с таким вопросом можно ли добавлять записи в связанные таблицы при помощи SQL-запроса... ? Как это сделать это мышью я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru