并非在字符串格式化期间转换所有参

mor*_*uru 4 python mysql

thumbnail并且image是BLOB字段,num1并且num2是Integer字段,其他是Str.

我想将二进制数据插入MYSQL.但是当这一行调用时,出现错误.

cursor.execute("INSERT INTO image(num1, num2, filename, ext, thumbnail, image) VALUES(?, ?, ?, ?, ?, ?);" , (num1, num2, _name, _ext, _thumb, _image))
Run Code Online (Sandbox Code Playgroud)

错误文本:不是在字符串格式化期间转换的所有参

怎么解决?请教我.

unu*_*tbu 5

如果您使用的是MySQLdb,请尝试:

cursor.execute("""
    INSERT INTO image
    (num1, num2, filename, ext, thumbnail, image) VALUES
    (%s, %s, %s, %s, %s, %s)""" , (num1, num2, _name, _ext, _thumb, _image))
Run Code Online (Sandbox Code Playgroud)

  • @Josh Smeaton:由于`filename` 是某种文本字段,如果`_name` 是字符串`"); DROP TABLE IMAGE;"` 那么这就是将插入到`filename` 字段中的字符串。不会发生 SQL 注入。 (2认同)