Как работать с BLOB-данными (бинарные данные) в pyodbc?

Пользователь

от guillermo , в категории: Python , 10 месяцев назад

Как работать с BLOB-данными (бинарные данные) в pyodbc?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от alisa.bahringer , 10 месяцев назад

@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-поле.

Пользователь

от magali , 10 месяцев назад

@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).


Обратите внимание, что код может отличаться в зависимости от вашей базы данных.