반응형
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
MySQL : 데이터 타입
MySQL MySQL 데이터 타입 MySQL 에서 사용하는 데이터 타입에 대해서 알아본다. CHAR 데이터 타입 CHAR와 VARCHAR(VARiable length CHARacter string)은 모두 텍스트 문자열을 허용하고, 필드의 크기를 제한한다...
ra2kstar.tistory.com
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 |