반응형
1. 이미지 저장할 테이블 만들기
create table images(
image_nm int auto_increment primary key,
image_data blob)
mysql 에서 이미지를 저장할 테이블을 간단하게 만든다.
base64로 변환하여 이미지를 저장할 예정이다.
base64는 이미지보다 용량이 125%로 커져서 저장된다는 단점이 있으나 안정적임.
blob: 바이너리를 저장할 수 있는 공간 tinyblob 255byte blob 64KB mediumblob 16MB longblob 4G |
mysql 데이터 타입에 대해 잘 나와있는 블로그
https://ra2kstar.tistory.com/82
2. 파이썬에서 연결
import pandas as pd
from sqlalchemy import create_engine
from PIL import Image
import base64
from io import BytesIO
engine = create_engine('mysql+pymysql://사용자아이디:비밀번호@localhost/db명', echo = False)
buffer = BytesIO()
im = Image.open('이미지명.jpg')
# im.show()
im.save(buffer, format='jpeg')
img_str = base64.b64encode(buffer.getvalue())
print(img_str) # 변환된 데이터 확인 가능
img_df = pd.DataFrame({'image_data':[img_str]})
img_df.to_sql('images', con=engine, if_exists='append', index=False)
sqlalchemy 및 pandas의 to_sql를 사용하였다.
3. mysql에 넣은 데이터를 파이썬으로 다시 불러와서 이미지 확인하기
import pandas as pd
from sqlalchemy import create_engine
from PIL import Image
import base64
from io import BytesIO
engine = create_engine('mysql+pymysql://사용자아이디:비밀번호@localhost/db명', echo = False)
img_df = pd.read_sql(sql='select * from 테이블명' ,con=engine)
img_str = img_df['image_data'].values[0]
# print(type(img_str)) # data type이 'byte'이다.
img = base64.decodestring(img_str)
im = Image.open(BytesIO(img))
im.show()
끝~
반응형
'DBMS' 카테고리의 다른 글
[mariaDB 설치] 마리아DB 서버 설치 (0) | 2021.07.04 |
---|---|
DB 관리툴 - DBeaver 설치 및 사용하기 (0) | 2021.06.30 |
[mssql] Excel, csv 파일 쉽게 넣기_발생 가능한 오류도 정리 (0) | 2018.06.29 |
데이터 컬럼/필드 삭제 (0) | 2018.06.15 |
[sql] mssql 데이터 삽입 방법 모음 (0) | 2018.05.23 |