Как сохранить образ в базе данных IBM DB2, используя python? - PullRequest
0 голосов
/ 13 апреля 2020

Я могу подключиться к своей базе данных IBM DB2 с помощью файла python, я могу выполнять через него всевозможные команды, но как мне сохранить изображение в столбце моей таблицы в базе данных DB2? Я создал столбец типа BLOB в моей таблице.

1 Ответ

0 голосов
/ 13 апреля 2020

Почему бы не взглянуть на контрольные примеры для ibm_db на github?

Они показывают контрольный пример использования опции PARAM_FILE для ibm_db.bind_param(), чтобы вызвать копирование содержимого файла изображения в BLOB столбец.

См. Контрольный пример [здесь] [1].

Хотя тест (ы) может быть устаревшим, в следующем фрагменте кода показаны параметры, которые работают с использованием ibm_db версии 3.0.1 (успешно вставьте файл jpg в столбец BLOB) с помощью метода PARAM_FILE:

jpg_file="/home/some_user/Pictures/houston.jpg"  # path to the image file

# table my_pics already exists with a blob colum called jpg_content of appropriate length
# The database already contains a table called MY_PICS in the current schema
# with a BLOB column named JPG_CONTENT
#

insert_sql = "INSERT INTO my_pics(jpg_content) values(?)"
try:
    stmt = ibm_db.prepare(conn, insert_sql)
    print("Successfully prepared the insert statement")
except:
    print("Failed to compile the insert statement")
    print(ibm_db.stmt_errormsg(stmt))
    ibm_db.close(conn)
    sys.exit(1)

# link a file-name to the parameter-marker of the insert-statement (target column is BLOB)

try:
    rc = ibm_db.bind_param(stmt, 1, jpg_file, ibm_db.PARAM_FILE,ibm_db.SQL_BLOB )
    print("Bind returned: "+str(rc))
    print("Successfully bound the filename to the parmameter-marker")

except:
    print("Bind returned: "+str(rc))
    print("Failed to bind the input parameter file")
    print(ibm_db.stmt_errormsg(stmt))
    ibm_db.close(conn)
    sys.exit(1)

try:
    ibm_db.execute(stmt)
    print("Successfully inserted jpg file into blob column")
except:
    print("Failed to execute the insert to blob column")
    print(ibm_db.stmt_errormsg(stmt))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...