2017-11-11 16 views
0

画像を挿入するためのテーブルが1つあります。それから、MySQLデータベースとPython 3コードを使用してイメージを取得します。私のコードはうまく実行されますが、私の問題はイメージを取得するたびに私のテーブルに配置された最初のイメージを表示していて、forループを使ってBLOBを1つずつ取り出す方法がわかりません。ここでPython 3を使用してMySQLデータベースから複数の画像を1つずつ取得

私のコードは次のとおりです。 - code.py:

from PIL import Image 
import pymysql 
from api import mysql 

db=pymysql.connect(host="localhost",user="root",passwd="root",db="votelist") 
image = Image.open('D:/mine project/face_reg/media/a.jpg') 
blob = open('D:/mine project/face_reg/media/a.jpg', 'rb').read() 
sql = 'INSERT INTO imo(image) VALUES(%s)' 
args = (blob) 
cursor=db.cursor() 
cursor.execute(sql,args) 
sql1='select image from imo' 
# i=sql1 
# for image in i: 
#  print(i) 
# else: 
#  print("no") 
db.commit() 
cursor.execute(sql1) 
data=cursor.fetchall() 
print ('Inserted') 
file_like=io.BytesIO(data[0][0]) 
img=PIL.Image.open(file_like) 
img.show() 
print('retrieved') 
db.close() 

...

+0

'args =(blob)'にカンマがありません。これを1タプルにするには、 'args =(blob、)'でなければなりません。 –

+0

ありがとうございました:) - コードを実行すると削除されました。 – shruthi

答えて

1

を私が試してみましたが、私は誰も私を助けて私をoutput..Can期待得ることができない私が持っています試してみましたが、私は期待した結果を得ました..

import io 
from io import BytesIO 

import PIL.Image 
# import cStringIO 
from PIL import Image 
import pymysql 
from api import mysql 

db=pymysql.connect(host="localhost",user="root",passwd="root",db="votelist") 
image = Image.open('D:/mine project/face_reg/media/a.jpg') 
blob = open('D:/mine project/face_reg/media/a.jpg', 'rb').read() 
sql = 'INSERT INTO imo(image) VALUES(%s)' 
args = (blob) 
cursor=db.cursor() 
cursor.execute(sql,args) 
sql1='select image from imo' 
conn=mysql.connect() 
cursor=conn.cursor() 
cursor.execute("select * from imo") 
data=cursor.fetchall() 
for a in data: 
    file_like = io.BytesIO(a[0]) 
    img = PIL.Image.open(file_like) 
    img.show() 
関連する問題