개발

Python 코드를 통해 MySQL에 값 집어넣기(Docker)

SYUKJH 2024. 4. 25. 16:24

 

미리 설치해 둔 도커를 통해 mysql 이미지를 사용하여 컨테이너를 실행하였다.(13306 포트, 루트계정 비밀번호 1234)

docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=1234 -p 13306:3306 -d mysql:latest

 

이후 mysql에 접속하여주었다.

mysql -h 127.0.0.1 -P 13306 -u root -p

 

미리 사용할 데이터베이스를 생성해 주고 mysql에서 나와주었다.

CREATE DATABASE mydatabase;
exit

 

그리고 이전에 만들어두었던 poetry를 활용한 가상 환경 프로젝트로 이동해 주었다.

https://jaehyeon-blog.tistory.com/22

 

poetry를 사용해 가상 환경 구성하기(fastapi + mysql 구성)

먼저 가상 환경을 구성할 프로젝트 폴더를 생성해 준 후 생성한 폴더로 이동해 주었다.mkdir test_poetrycd test_poetry 이후 poetry init 명령어를 실행해 주었다. poetry init은 아래와 같은 기능을 실행한다

jaehyeon-blog.tistory.com

cd test_poetry
poetry shell

 

이전에는 fastapi와 sqlalchemy를 설치해 주었는데 pymysql를 추가로 설치해 주었다.

pymysql은 순수 python으로 구현된 MySQL 클라이언트라고 한다.

pymysql을 통해 python 애플리케이션에서 데이터를 조회, 추가, 삭제, 수정할 수 있다고 한다.

poetry add pymysql

 

그리고 GPT가 만들어준 간단한 데이터 삽입 python 코드를 통해 연결이 잘 되는지 확인해 보겠다. 

sudo vi test.py
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 데이터베이스 연결 설정
DATABASE_URL = "mysql+pymysql://root:1234@localhost:13306/mydatabase"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(bind=engine)

Base = declarative_base()

# SimpleData 모델 정의
class SimpleData(Base):
    __tablename__ = 'simple_data'
    id = Column(Integer, primary_key=True)
    data = Column(String(255))

# 데이터베이스에 테이블 생성
Base.metadata.create_all(engine)

# 데이터베이스 세션 생성
session = SessionLocal()

# 데이터베이스에 새 데이터 추가
new_data = SimpleData(data="Hello, World!")
session.add(new_data)
session.commit()

# 저장된 데이터 확인
saved_data = session.query(SimpleData).first()
print(f"Saved Data: {saved_data.data}")

# 세션 종료
session.close()

 

파일을 생성하였다면 python test.py 명령어를 통해 코드를 실행해 보자

python test.py

 

Hello, World!라는 문구가 저장되었다고 하니 실제로 mysql에 접속하여 확인해 보자 

mysql -h 127.0.0.1 -P 13306 -u root -p

USE mydatabase;  
SELECT * FROM simple_data;

 

값이 잘 저장되어 있는 것을 확인할 수 있다.