mysql.connector操作mysql的blob值
This tutorial shows you how to work with MySQL BLOB data in Python, with examples of updating and reading BLOB data.
The authors table has a column named photo whose data type is BLOB. We will read data from a picture file and update to the photo column.
Updating BLOB data in Python
First, we develop a function named read_file() that reads a file and returns the file’s content:
|
1
2
3
4
|
def read_file(filename):
with open(filename, 'rb') as f:
photo = f.read()
return photo
|
Second, we create a new function named update_blob() that updates photo for an author specified by author_id .
|
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
|
from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config
def update_blob(author_id, filename):
# read file
data = read_file(filename)
# prepare update query and data
query = "UPDATE authors " \
"SET photo = %s " \
"WHERE id = %s"
args = (data, author_id)
db_config = read_db_config()
try:
conn = MySQLConnection(**db_config)
cursor = conn.cursor()
cursor.execute(query, args)
conn.commit()
except Error as e:
print(e)
finally:
cursor.close()
conn.close()
|
Let’s examine the code in detail:
- First, we call the
read_file()function to read data from a file and return it. - Second, we compose an UPDATE statement that updates photo column for an author specified by
author_id. Theargsvariable is a tuple that contains file data andauthor_id. We will pass this variable to theexecute()method together with thequery. - Third, inside the
try exceptblock, we connect to the database, instantiate a cursor, and execute the query withargs. To make the change effective, we callcommit()method of the MySQLConnection object. - Fourth, we close the cursor and database connection in the
finallyblock.
Notice that we imported MySQLConnection and Error objects from the MySQL Connector/Python package and read_db_config() function from the python_mysql_dbconfig module that we developed in the previous tutorial.
Let’s test the update_blob() function.
|
1
2
3
4
5
|
def main():
update_blob(144, "pictures\garth_stein.jpg")
if __name__ == '__main__':
main()
|
Notice that you can use the following photo and put it into the pictures folder for testing.

Inside the main function, we call the update_blob() function to update the photo column for the author with id 144. To verify the result, we select data from the authors table.
|
1
2
|
SELECT * FROM authors
WHERE id = 144;
|

It works as expected.
Reading BLOB data in Python
In this example, we select BLOB data from the authors table and write it into a file.
First, we develop a write_file() function that write a binary data into a file as follows:
|
1
2
3
|
def write_file(data, filename):
with open(filename, 'wb') as f:
f.write(data)
|
Second, we create a new function named read_blob() as below:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
def read_blob(author_id, filename):
# select photo column of a specific author
query = "SELECT photo FROM authors WHERE id = %s"
# read database configuration
db_config = read_db_config()
try:
# query blob data form the authors table
conn = MySQLConnection(**db_config)
cursor = conn.cursor()
cursor.execute(query, (author_id,))
photo = cursor.fetchone()[0]
# write blob data into a file
write_file(photo, filename)
except Error as e:
print(e)
finally:
cursor.close()
conn.close()
|
The read_blob() function reads BLOB data from the authors table and write it into a file specified by the filename parameter.
The code is straightforward:
- First, we compose a SELECT statement that retrieves photo of a specific author.
- Second, we get the database configuration by calling the
read_db_config()function. - Third, inside the
try exceptblock, we connect to the database, instantiate cursor, and execute the query. Once we got the BLOB data, we use thewrite_file()function to write it into a file specified by thefilename. - Fourth, in the finally block, we close the cursor and database connection.
Now, let’s test the read_blob() function.
|
1
2
3
4
5
|
def main():
read_blob(144,"output\garth_stein.jpg")
if __name__ == '__main__':
main()
|
If you open the output folder in the project and see a picture there, it means that you have successfully read the blob from the database.
mysql.connector操作mysql的blob值的更多相关文章
- mysql常用操作 mysql备份与恢复
先登录mysql ==>mysql -uroot -p 查看数据库的版本 select version(); 查看有哪些库 show datases; 查看当前处于哪个库 select da ...
- python操作三大主流数据库(3)python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用
python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用 手册地址: http://docs.sqlalchemy.org/en/rel_1_1/orm/i ...
- centos LAMP第四部分mysql操作 忘记root密码 skip-innodb 配置慢查询日志 mysql常用操作 mysql常用操作 mysql备份与恢复 第二十二节课
centos LAMP第四部分mysql操作 忘记root密码 skip-innodb 配置慢查询日志 mysql常用操作 mysql常用操作 mysql备份与恢复 第二十二节课 mysq ...
- [mysql] C++操作mysql方法总结(1)
From: http://www.cnblogs.com/magicsoar/p/3817518.html C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作 ...
- [mysql] C++操作mysql方法
下载:http://mirrors.sohu.com/mysql/MySQL-5.5/ From: http://www.cnblogs.com/magicsoar/p/3817518.html C+ ...
- python导入模块报错:ImportError: No module named mysql.connector(安装 mysql)
python的版本是 $ python --version Python 2.7.12 报错代码如下 import mysql.connector 报错信息是 ImportError: No modu ...
- MySql Connector/Net Mysql like 搜索中文的问题(c#和asp.net连接mysql)
Connector/Net 6.9.8 选择.net/mono即可,不需要安装. 将对应版本的MySql.Data.dll复制到bin目录下即可使用 http://dev.mysql.com/down ...
- python操作mysql数据库的常用方法使用详解
python操作mysql数据库 1.环境准备: Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get instal ...
- Python使用MySQLConnector/Python操作MySQL、MariaDB数据库
使用MySQL Connector/Python操作MySQL.MariaDB数据库 by:授客 QQ:1033553122 因目前MySQLdb并不支持python3.x,而MySQL官方已经提 ...
随机推荐
- CFileFind类的使用总结
CFileFind类的使用总结(转) CFileFind类的使用总结2007-7-71.CFileFind类的声明文件保存在afx.h头文件中.2.该类的实现的功能:执行本地文件的查找(查找某个具体的 ...
- IP验证正则表达式
Regex r = new Regex(@"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$" ...
- 学生信息管理系统(自己辛辛苦苦做了几天,虽然简陋,也凑合吧,bug不算太严重,主要是格式不太很完美)
/*学生成绩管理系统V3.0(链表版)某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程成实现如下菜单驱动的学生成绩管理系统.1.从文件读入每 ...
- javascript-binarySearch
前提: 数组已排序,且为正整数数组. function brnarySearch(arg, arr) { var right = arr.length - 1; var left = 0; while ...
- python的rename原来这么用
本来想实践应用一下如何批量修改,后来一想怎么那么麻烦,连最基本都都不会,简化到这份上再慢慢复杂之 一开始用help(os.rename)查了该方法的用法, 出来的解释太简单了,以为路径用的是和wind ...
- java中的那些坑
最近准备换工作,为了少让人家鄙视,就要狠狠地藐视这些面试题目.找了本电子书,发了有好多坑,都是特别简单,但是很少有人做对的题目.面对这样的题目,我却有一种兴奋的感觉,也许是因为一直做着重复的工作没有新 ...
- Cannot find or open the PDB file问题的解决
'testcv.exe' (Win32): Loaded 'D:\Documents\Visual Studio 2013\Projects\testcv\x64\Debug\testcv.exe'. ...
- 将Linux文件清空的几种方法
1.使用重定向的方法 [root@centos7 ~]# du -h test.txt .0K test.txt [root@centos7 ~]# > test.txt [root@cento ...
- Endless Sky源码学习笔记-2
数据载入框架: void GameData::BeginLoad(const char * const *argv)为数据载入的最上层method,其主要框架为: void Files::Init(c ...
- C#使用ESC指令控制POS打印机打印小票
1.前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的po ...