0 / 0 / 1
Регистрация: 18.06.2017
Сообщений: 4

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

19.06.2017, 11:53. Показов 938. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru