Запрос помощи в чтении типа данных blob в mariadb через python - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь напечатать содержимое внутри типа данных BLOB, и вот мой код Python, а также ошибка.

Каков наилучший метод для чтения данных BLOB через Python?

Любая помощь здесь очень ценится.

Ссылка на скриншот таблицы.

изображение таблицы

Я познакомился со столбцом типа данных BLOB-объектовсодержит числа с плавающей точкой, заданный образец ниже.

* * 1014 6.213203675953e-311 1.69759663307e-313 3e-323 1.697596633e-313 2.121995969e-314 5e-324 6.1113478779844e-311 4,473620042652186 4,473620042652186 4,473620042652186 4,473620042652186 4,473620042652186 4,473620042652186 4,473620042652186 4,473620042652186 4,4736200426521864.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186 4.473620042652186.,,.
import mysql.connector as mariadb

db_config = {
    'host': '123.0.0.0',
    'port': '1000',
    'database': 'any_db',
    'user': 'user_name',
    'password': 'pass_word'
    }


def read_blob(cell, experiment):
sql = """select Tuning_Curve_AuC from Cell_Table where cell = %s and experiment = %s"""

try:
    # query blob data form the authors table
    conn = mariadb.connect(**db_config)
    cursor = conn.cursor()
    cursor.execute(sql, (cell, experiment))
    blob = cursor.fetchone()[0]
    print(blob)

except(Exception, mariadb.DatabaseError) as error:
    print(error)

finally:
    if conn is not None:
       conn.close()
       print('Database connection closed.')

def main():
read_blob(1, 'E40_062716')

if __name__ == '__main__':
main()

Ошибка:

<built-in method fetch_row of _mysql_connector.MySQL object at 0x7ff57f2b5e00> returned a result with an error set

Соединение с базой данных закрыто.

1 Ответ

0 голосов
/ 22 сентября 2018

Я немного покопался и нашел решение.Оказывается, нам нужно извлечь необработанные данные и использовать массив для преобразования их в десятичные числа (с плавающей запятой).Вот та часть фрагмента кода.

    conn = mariadb.connect(**db_config)
    cursor = conn.cursor(raw=True)
    cursor.execute(sql, (cell, experiment))
    blob = cursor.fetchone()[0]
    doubles_sequence = array.array('d', blob)
    print(doubles_sequence)

и, конечно, вам нужно «импортировать массив».

...