Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk menyelesaikan ralat 1064 apabila memasukkan imej binari ke dalam mysql menggunakan python3

Bagaimana untuk menyelesaikan ralat 1064 apabila memasukkan imej binari ke dalam mysql menggunakan python3

WBOY
Lepaskan: 2023-05-18 20:22:49
ke hadapan
1473 orang telah melayarinya

Masukkan imej binari ke dalam ralat 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()
Salin selepas log masuk

Apabila kod di atas dijalankan, mysql akan melaporkan ralat 1064:

pymysql.err.ProgrammingError: (1064, " Anda mempunyai ralat dalam sintaks SQL anda; semak manual yang sepadan dengan versi pelayan MySQL anda untuk sintaks yang betul untuk digunakan berhampiran 'cecedd67b6d4716bdbab9fac36e0b2ad1c81cbac.jpg'', ''/home/images/f' di baris 1")

Pengubahsuaian: Tukar ('%s', '%s', '%s') kepada (%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()
Salin selepas log masuk

Berjaya sekali lagi

Disebabkan oleh beberapa gangguan dokumen, saya menghabiskan masa yang lama di Internet untuk mencari punca masalah Parameter %s dalam pymysql tidak perlu ditambah dengan tanda '' Apabila kita memasukkan rentetan, a ralat mungkin tidak dilaporkan untuk masalah ini, kerana aksara Rentetan itu sendiri juga mempunyai tanda petikan sekali lagi tidak akan melaporkan ralat, tetapi jika ia dalam format binari, ralat akan dilaporkan Bagaimana untuk menyimpan gambar ke dalam mysql dalam binari?

MYSQL menyokong menyimpan gambar ke dalam pangkalan data, dan terdapat medan khas BLOB (Binary Large Object) yang sepadan

Mula-mula buat jadual dalam pangkalan data mysql anda untuk menyimpan gambar

CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);
Salin selepas log masuk

Kemudian gunakan kod python untuk menyimpan gambar setempat ke pangkalan data

# 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)    #出现错误,自动回滚,打印错误并退出
Salin selepas log masuk

Bagaimana untuk menyelesaikan ralat 1064 apabila memasukkan imej binari ke dalam mysql menggunakan python3 mendapati gambar itu berjaya disimpan dalam pangkalan data

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat 1064 apabila memasukkan imej binari ke dalam mysql menggunakan python3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan