Python 코드를 통해 MySQL에 값 집어넣기(Docker)
미리 설치해 둔 도커를 통해 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;
값이 잘 저장되어 있는 것을 확인할 수 있다.