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

Обновить поле blob в interbase

25.10.2023, 14:56. Показов 1383. Ответов 10

Студворк — интернет-сервис помощи студентам
Добрый день пытаюсь обновить blob поле в interbase
Python
1
2
3
4
5
6
]
f = open (text.txt, 'rb')
Text = f.read()
Cur = con.cursor()
Cur.execute("update name_table set name_blob_pole = ? Where id = ?", (Text,  43))
con.commit()
Выдает
ошибку error while preparing SQL statement и т.д.
Есть предположение что данные выглядят в в виде b'\xef\xf0\...' и это не нравится компилятору
Подскажите в чем проблема может кто знает
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2023, 14:56
Ответы с готовыми решениями:

Обновить поле blob файлом из формы
Написал код, выполняется без ошибок, но не обновляет Ж(( <% server.scripttimeout=50000 i=request.binaryread(Request.TotalBytes) ...

работа с BLOB в InterBase, запись в BLOB размером более 32 кБ
почему-то не проходит запись в BLOB размером более 32 кБ. научите кто-нибудь. Язык - PHP. Записываю код вот так: if...

Как скопировать содержимое BLOB поля одной записи в BLOB поле другой?
Как скопировать содержимое BLOB поля одной записи в BLOB поле другой?

10
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
26.10.2023, 00:38
Цитата Сообщение от Dan49 Посмотреть сообщение
Выдает
ошибку error while preparing SQL statement и т.д.
1) error while preparing SQL statement это обобщенное сообщение, обычно в и т.д. указывается, что именно пошло не так.
2) хорошо бы было узнать какая библиотека используется для работы с БД
Цитата Сообщение от Dan49 Посмотреть сообщение
Есть предположение что данные выглядят в в виде b'\xef\xf0\...' и это не нравится компилятору
данные так выглядят только на вашем экране, перфикс b говорит, что это массив байтов.
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 47
26.10.2023, 02:20  [ТС]
Библиотеку использую interbase
Python
1
import interbase
Я думаю что то в запросе sql ему не нравится
Нашел в документации по interbase. https://docwiki.embarcadero.co... _Blob_Data как обновлять blob но особо не понял

Добавлено через 17 минут
Вот нашел пример но у меня он тоже не работает, также ошибка
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import fdb
 
con = fdb.connect(dsn='localhost:/temp/test.db', user='sysdba', password='pass')
curScroll = con.cursor()
curUpdate = con.cursor()
 
curScroll.execute("select city from addresses for update")
curScroll.name = 'city_scroller'
update = "update addresses set city=? where current of " + curScroll.name
 
for (city,) in curScroll:
    city = text # make some changes to city в моем случае city равно text
    curUpdate.execute( update, (city,) )
 
con.commit()
Не понимаю в чем проблема
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
26.10.2023, 11:26
https://github.com/Embarcadero... /tree/main в проекте есть папка docs конкретно для этой библиотеки.
...docs/usage-guide.html#working-with-blobs
Interbase uses two types of BLOB values:
- Materialized BLOB values are Python strings. This is the default type.
- Streamed BLOB values are file-like objects.
Соответственно для первого варианта нужно пихать обычные строки
Python
1
2
3
4
# --- Materialized mode (str objects for both input and output) ---
# Insertion:
cur.execute("insert into blob_test values (?)", ('abcdef',))
cur.execute("insert into blob_test values (?)", ('ghijklmnop',))
Во втором, если данные в памяти оборачивать в StringIO, если данные для поля хранятся в файле, пихать сам файл
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os.path
from cStringIO import StringIO
 
import interbase
...
# --- Streaming mode (file-like objects for input; interbase.BlobReader objects for output) ---
 
# Insertion:
cur.execute("insert into blob_test values (?)", (StringIO('abcdef'),))
cur.execute("insert into blob_test values (?)", (StringIO('ghijklmnop'),))
 
f = file(os.path.abspath(__file__), 'rb')
cur.execute("insert into blob_test values (?)", (f,))
f.close()
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 47
27.10.2023, 02:33  [ТС]
Если через параметры
Python
1
2
cur.execute("Update name_table set name column = ? Where id=?", (1, 'ffggghhh'))
con.commit()
то Выдает ошибку
OSError: exception: access violation reading
Если вот так
Python
1
2
cur.execute("Update name_table set name column = 'ffgggghhh' Where id=1")
con.commit()
То всё проходит, в чем может быть проблема?
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
27.10.2023, 09:32
Как минимум, в первом варианте параметры передаются в обратном порядке от второго.
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 47
30.10.2023, 12:03  [ТС]
Да согласен, поменял местами ошибка всё равно таже

Добавлено через 26 минут
Да у меня еще вопрос по русскому тексту, хочу file txt с русской речью в blob запихать, не получается , латинские воспринимает, кириллицу нет - непонятные символы какие то выходят
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 47
30.10.2023, 14:19  [ТС]
Вот фото ошибок, в самом драйвере
Миниатюры
Обновить поле blob в interbase  
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
01.11.2023, 13:23
Цитата Сообщение от Dan49 Посмотреть сообщение
латинские воспринимает, кириллицу нет - непонятные символы какие то выходят
Выходят где? В какой кодировке сохранялся файл, какая кодировка установлена в IB?
Цитата Сообщение от Dan49 Посмотреть сообщение
то Выдает ошибку
OSError: exception: access violation reading
Вот тут прям хз Единственно нашел в доке
Parameterized statements also have some limitations. Currently:
- DATE, TIME and DATETIME values must be relevant datetime objects.
- NUMERIC and DECIMAL values must be decimal objects.
Попробуйте id'шник к Decimal преобразовать и в запрос подставить. Крайний случай попробовать разные версии библиотеки, если доступны.
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 47
10.11.2023, 04:42  [ТС]
Сделал но все равно не работает
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
12.11.2023, 13:14
Учитывая, что библиотека относительно новая 05.08.23, возможно и баг. Тут только issue на гитхабе создавать разрабам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2023, 13:14
Помогаю со студенческими работами здесь

BLOB поля в Interbase?
Вот я добавил фотографию в BLOB поле таким способом procedure TForm1.Button1Click(Sender: TObject); var jpeg: TJPEGImage; ...

Builder C++ VCL InterBase Memo(BLOB) поля
Приветствую. Вот столкнулся с проблемкой. По работе с BLOB полями. У меня есть база и таблица с BLOB полем. оно SUB_TYPE 1. Есть...

Нарушение целостности информации при попытке обновить данные в BLOB-e Oracle-a
Pri popitke update-a dannix xranyasixsya v BLOB-e Oracle-a voznikaet narushenie celostnosti informacii: nevozmozno stanovitsya chtenie...

Автоматически обновить поле в форме при добавлении нового значения в поле со списком
помогите плииииз, у меня форма в ней поля: код(счетчик); фамилия(текст); профессия(подстановка из таблицы "профессия");...

blob поле
Здравствуйте ! немного непонятно с blob полями.. Пусть есть БД с несколькими таблицами. (см. РИС). КАК мне добавить blob поле и номер...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru