Python往MySQL存储图片

这篇博客介绍了如何使用Python将图片数据存储到MySQL数据库中,通过创建一个包含id和imgs字段(imgs字段类型为blob)的img表来实现二进制数据的存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python往MySQL存储图片

新建表img,设置id字段和imgs字段(设置为blob属性,二进制数据)

                
### PythonMySQL交互实现数据存储 #### 使用`pymysql`库连接并操作MySQL数据库 为了在Python中与MySQL进行交互,可以使用`pymysql`库建立连接。安装此库可通过pip命令完成: ```bash pip install pymysql ``` 建立到MySQL服务器的连接如下所示[^3]: ```python import pymysql connection = pymysql.connect( host='localhost', user='your_username', password='your_password', database='your_database' ) try: with connection.cursor() as cursor: sql_query = "SELECT VERSION()" cursor.execute(sql_query) version = cursor.fetchone() finally: connection.close() print(f"MySQL Database Version: {version}") ``` 上述代码展示了如何获取MySQL版本信息作为测试查询。 #### 存储二进制大对象(BLOB) 对于需要保存图像或其他类型的二进制文件的情况,可利用MySQL提供的BLOB字段类型来存取这些较大的二进制对象。下面的例子说明了怎样把一张图片上传至名为`images`的数据表内[^1]: ```sql CREATE TABLE images ( id INT AUTO_INCREMENT PRIMARY KEY, filename VARCHAR(255), data LONGBLOB NOT NULL ); ``` 对应的Python脚本则负责打开本地磁盘上的目标文件,并将其内容插入新创建好的记录里去: ```python def insert_image(file_path): try: with open(file_path, 'rb') as file: binary_data = file.read() with connection.cursor() as cursor: query = """INSERT INTO images (filename, data) VALUES (%s,%s);""" cursor.execute(query, ('example.jpg', binary_data)) connection.commit() except Exception as e: print(e) ``` 这段程序会读取指定路径下的JPEG格式照片,并把它编码成适合传输给数据库的形式;之后再通过预编译语句安全地传递参数值以防止SQL注入攻击的发生。 #### 调用存储过程 当业务逻辑较为复杂时,编写和调用存储过程是一种有效的方式。这里给出一段简单的例子展示如何定义以及从Python端触发执行一个自定义函数[^2]: 先是在MySQL侧准备好了这样一个子程序: ```sql DELIMITER // CREATE PROCEDURE get_all_users(INOUT total INT) BEGIN SELECT COUNT(*) INTO total FROM users; END// DELIMITER ; ``` 接着就是Python这边用来请求该服务的具体做法: ```python with connection.cursor() as cursor: result_args = cursor.callproc('get_all_users', args=(0,)) print(result_args[0]) ``` 以上便是关于PythonMySQL之间基本交流方式的一些介绍,包括但不限于常规链接设置、处理大型二进制资料集还有更高级别的功能如远程控制已有的事务流程等特性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值