>  기사  >  백엔드 개발  >  python3이 mysql에 바이너리 이미지를 삽입할 때 1064 오류 문제를 해결하는 방법

python3이 mysql에 바이너리 이미지를 삽입할 때 1064 오류 문제를 해결하는 방법

WBOY
WBOY앞으로
2023-05-18 20:22:491422검색

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, "SQL 구문에 오류가 있습니다. 매뉴얼을 확인하세요. '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 오류 문제를 해결하는 방법

사진이 데이터베이스에 성공적으로 저장되는 것으로 확인됩니다

위 내용은 python3이 mysql에 바이너리 이미지를 삽입할 때 1064 오류 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제