@guillermo
Для работы с BLOB-данными (бинарными данными) в pyodbc, вы можете использовать параметризованные запросы и методы чтения и записи данных. Вот примеры:
Чтение BLOB-данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import pyodbc # Установить соединение с базой данных conn = pyodbc.connect("DRIVER={driver_name};SERVER=server_name;DATABASE=db_name;UID=user_id;PWD=password") # Создать курсор для выполнения запросов cursor = conn.cursor() # Выполнить запрос для получения BLOB-данных cursor.execute("SELECT blob_data FROM table_name WHERE id = ?", (blob_id,)) # Получить первую запись row = cursor.fetchone() # Извлечь BLOB-данные blob_data = row.blob_data # Закрыть соединение с базой данных conn.close() |
Запись BLOB-данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import pyodbc # Установить соединение с базой данных conn = pyodbc.connect("DRIVER={driver_name};SERVER=server_name;DATABASE=db_name;UID=user_id;PWD=password") # Создать курсор для выполнения запросов cursor = conn.cursor() # Загрузить BLOB-данные из файла with open("path/to/file", "rb") as file: blob_data = file.read() # Выполнить запрос для записи BLOB-данных cursor.execute("INSERT INTO table_name (blob_data) VALUES (?)", (pyodbc.Binary(blob_data),)) # Закрыть транзакцию conn.commit() # Закрыть соединение с базой данных conn.close() |
Обратите внимание, что в примерах кода используется замена driver_name
, server_name
, db_name
, user_id
, password
, table_name
и blob_id
на фактические значения, соответствующие вашей конфигурации базы данных и данных, которые вы хотите получить или записать в BLOB-поле.
@guillermo
Для работы с BLOB-данными (бинарными данными) в pyodbc вы можете использовать параметризованные запросы с использованием параметра типа pyodbc.Binary
.
Вот простой пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import pyodbc # Установка подключения к базе данных conn = pyodbc.connect(connection_string) # Создание курсора cursor = conn.cursor() # Создание таблицы с BLOB-столбцом cursor.execute("CREATE TABLE images (id INT, data VARBINARY(MAX))") # Вставка BLOB-данных в таблицу with open("image.jpg", "rb") as file: image_data = file.read() cursor.execute("INSERT INTO images (id, data) VALUES (?, ?)", (1, pyodbc.Binary(image_data))) # Чтение BLOB-данных из таблицы cursor.execute("SELECT data FROM images WHERE id = 1") row = cursor.fetchone() blob_data = row[0] # Запись BLOB-данных в файл with open("image.jpg", "wb") as file: file.write(blob_data) # Закрытие соединения conn.close() |
В этом примере создается таблица images
с двумя столбцами: id
типа INT
и data
типа VARBINARY(MAX)
. Затем используется параметризованный запрос для вставки и считывания BLOB-данных из таблицы.
При чтении BLOB-данных из таблицы, данные хранятся в поле data
первой полученной строки (row[0]
). Затем BLOB-данные записываются в файл "image.jpg" с помощью операции записи бинарного файла (wb
).
Обратите внимание, что код может отличаться в зависимости от вашей базы данных.