python3往mysql插入二进制图片出现1064错误如何解决
往mysql插入二进制图片1064错误
conn = pymysql.connect(*) cur = conn.cursor() os.chdir('/home/jibo/zxcsSpider/images/full/') list = os.listdir() count1 = 0 for imagename in list: count1 += 1 f = open(imagename, 'rb') data = f.read() f.close() imagepath = '/home/images/full/' + imagename imagebin = pymysql.Binary(data) sql = "insert into images(imagename,imagepath,imagebin) values('%s', '%s', '%s')" cur.execute(sql, (imagename, imagepath, imagebin)) conn.commit() print('image:' + str(count1)) cur.close() conn.close()
上面代码运行时,mysql会报1064错误:
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cecedd67b6d4716bdbab9fac36e0b2ad1c81cbac.jpg'', ''/home/images/f' at line 1")
修改:将('%s', '%s', '%s')改为(%s, %s, %s)
conn = pymysql.connect(*) cur = conn.cursor() os.chdir('/home/images/full/') list = os.listdir() count1 = 0 for imagename in list: count1 += 1 f = open(imagename, 'rb') data = f.read() f.close() imagepath = '/home/images/full/' + imagename imagebin = pymysql.Binary(data) sql = "insert into images(imagename,imagepath,imagebin) values(%s, %s, %s)" cur.execute(sql, (imagename, imagepath, imagebin)) conn.commit() print('image:' + str(count1)) cur.close() conn.close()
再次运行成功;
因为某些文档干扰,在网上找了大半天才找倒原因问题,pymysql中的参数%s是不用加''号的,当我们插入字符串的时候可能不会应为这个问题报错,因为字符串本身也有引号,再次加引号不会报错,但二进制格式的话就会报错
图片如何以二进制存入mysql
MYSQL 支持把图片存入数据库,也相应的有一个专门的字段 BLOB (Binary Large Object)
首先要在你的mysql数据库中创建一个表,用于存储图片
CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);
然后用python代码将本地的图片存到数据库中
# coding=utf-8 import MySQLdb import sys try: fin = open("/home/dsq/tb/8.jpg") #打开本地图片,路径要写自己的 img = fin.read() fin.close() #读取结束,关闭文件 except IOError as e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) #出现错误打印错误并退出 try: conn = MySQLdb.connect(host="localhost", port=3306, user="root", passwd="#你的数据库密码#", db="数据库名") #连接到数据库 cursor = conn.cursor() #获取cursor游标 cursor.execute("INSERT INTO Images SET Data='%s'" % MySQLdb.escape_string(img)) #执行SQL语句 conn.commit() #提交数据 cursor.close() conn.close() #断开连接 except MySQLdb.Error,e: conn.rollback() print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit(1) #出现错误,自动回滚,打印错误并退出
发现图片成功存储到数据库中
以上是python3往mysql插入二进制图片出现1064错误如何解决的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

在 Notepad 中运行 Python 代码需要安装 Python 可执行文件和 NppExec 插件。安装 Python 并为其添加 PATH 后,在 NppExec 插件中配置命令为“python”、参数为“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通过快捷键“F6”运行 Python 代码。

在开发一个小型应用时,我遇到了一个棘手的问题:需要快速集成一个轻量级的数据库操作库。尝试了多个库后,我发现它们要么功能过多,要么兼容性不佳。最终,我找到了minii/db,这是一个基于Yii2的简化版本,完美地解决了我的问题。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。 Golang以其并发模型和高效性能着称,Python则以简洁语法和丰富库生态系统着称。
