“not all arguments converted during bytes formatting”的一个可能的解决方法

4 篇文章 1 订阅

最近写了一个python把图片写入Mysql数据库的小程序,在设计查询函数时报出

“not all arguments converted during bytes formatting”  的错误,百度了一堆方法,都没啥子用,最后在菜鸟教程里看到了一段代码,顿时有了启发!菜鸟里的代码是这样的:

import mysql.connector
 
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="123456",
  database="runoob_db"
)
mycursor = mydb.cursor()
 
sql = "SELECT * FROM sites WHERE name = %s"
na = ("RUNOOB", )
 
mycursor.execute(sql, na)
 
myresult = mycursor.fetchall()
 
for x in myresult:
  print(x)

而我自己的代码长的是下面这样:

# -*- coding: utf-8 -*-
import MySQLdb

#传入的参数为所需的图片表名以及对应的图片名
#定义一个检查插入结果的函数
def check_img(table,name):
#打开数据库连接
    db = MySQLdb.connect("localhost","root","123456","url", charset='utf8')

#连接数据库使用的用户名为:"root",密码为"123456"

#使用cursor获取游标
    cursor = db.cursor()

#SQL查询语句
 
    SQL = "SELECT IMG_CODE FROM {IMG} WHERE IMG_NAME =%s".format(IMG = table)

    args = (name)         
    try:
       
        # 获取单条记录
        cursor.execute(SQL,args)
        data =cursor.fetchone()         #fetchone方法返回的是一个元组
        result = data[0]
        print(result)
        return result
    except Exception as e:
        print(e)
    #关闭游标
    cursor.close()
    #关闭数据库
    db.close()

怎么样?找到错误没?哈哈,原来是这个地方还得加个逗号!!!至于原因嘛,我也不晓得!有大佬知道的话请指教!

综上,“not all arguments converted during bytes formatting”   的解决方法就是在arg 参数的里面加上一个逗号,适用于sql语句中只有一个%s的情况,有两个%s及以上的情况不加也不会报错,原因不详!下面这个函数就能正常工作,没有报错。

#插入函数需要提供表名和文件名以及图片的二进制数据
def insert_img(table,name,img_code):
    #打开数据库连接
    db = MySQLdb.Connect("localhost","root","123456","url", charset='utf8')
    #使用cursor获取游标
    cursor = db.cursor()
    #SQL语句
    SQL_insert = "INSERT INTO {tableName} (IMG_NAME,IMG_CODE) VALUES (%s, %s)".format(tableName = table)
    print(MySQLdb.Binary(img_code))
    args = (name,MySQLdb.Binary(img_code))
    try:
        #执行sql语句并提交事务
        cursor.execute(SQL_insert,args)
        db.commit()
    except Exception as e:
        #如果发生错误,事务回滚,撤销修改!
        db.rollback()
        print(e)
    #关闭游标
    cursor.close()
    #关闭数据库的连接
    db.close()

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daimashiren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值