파이썬과 데이터베이스 연결을 위해 두개의 컨테이너를 만드는 작업을 해보자
파일의 구조는 다음과 같다
docker-compose.yml
version: '2.1'
services:
mariadb:
image: mariadb:10.7
hostname: mariadb
container_name: mariadb
restart: always
ports:
- 3376:3306
environment:
MYSQL_ROOT_PASSWORD: root
python:
hostname: python
container_name: python
build:
context: .
dockerfile: ./Dockerfile
stdin_open: true
tty: true
restart: always
volumes:
- type: bind
source: ./code
target: /code
read_only: false
Dockerfile
FROM ubuntu:20.04
RUN apt update -y
RUN apt install python3.8 -y
RUN apt install vim -y
RUN apt install net-tools -y
RUN apt install iputils-ping -y
RUN apt install python3-pip -y
# RUN apt update -y
# RUN apt install language-pack-ko -y
# RUN apt install fonts-nanum -y
# RUN apt install fonts-nanum-coding -y
# RUN apt install fonts-noto-cjk -y
# ENV LANG ko_KR.UTF-8
# ENV LANGUAGE ko_KR.UTF-8
# ENV LC_ALL ko_KR.UTF-8
RUN apt update -y
COPY ./requirements.txt /requirements.txt
RUN pip3 install -r /requirements.txt
WORKDIR /root
RUN echo 'alias python=python3.8' >> .bashrc
WORKDIR /code
requirements.txt
# pandas
# pymysql
# sqlalchemy
# elasticsearch==7.13.1
# sklearn
# psutil
requirements에 주석처리한 이유는 내가 직접 설치해서 테스트를 할 것이기때문에 먼저 주석처리를 한다.
도커컴포즈 파일이 있는 위치에서 컨테이너를 올리자
docker-compose up -d
docker ps
마리아디비에 접속해서 기본 데이터베이스와 기본 테이블, 테이블에 데이터를 몇개 넣어보자
마리아디비 접속
docker exec -it mariadb bash
마리아디비에 접속한다
아이디 root 비밀번호 root
mysql -u root -p
root
데이터베이스를 먼저 보자
show databases;
a_db 라는 이름을 가진 데이터베이스를 만들자
create database a_db;
show databases;
a_db를 사용하고, 테이블을 조회해보자
use a_db;
show tables;
a_table 을 만들고 테이블을 조회해보자
create table a_db.a_table (id int primary key auto_increment, name varchar(32) not null) ENGINE=INNODB;
show tables;
select * from a_table;
데이터를 넣고 데이터를 조회해보자
insert into a_db.a_table (id, name) value (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f'), (7, 'g'), (8, 'h'), (9, 'i'), (10, 'j');
select * from a_db.a_table;
데이터가 잘 들어간 것을 확인할 수 있다
이제 exit로 데이터베이스 컨테이너를 나와서 파이썬 컨테이너로 들어가보자
exit
exit
docker exec -it python bash
먼저 라이브러리를 설치하자
pip install pymysql
pip list
처음 파이썬 파일에는 아무것도 쓰여있지 않다.
0_check_db.py
기본 틀을 써보자
0_check_db.py
import pymysql
connect = pymysql.connect(host='172.26.0.1',
port=3376,
user='root',
password='root',
db='a_db',
charset='utf8')
cur = connect.cursor()
sql = 'show tables'
cur.execute(sql)
for row in cur:
print(row)
해당 파이썬 파일을 실행시키자
python 0_check_db.py
a_db 데이터베이스에 a_table이라는 테이블이 있는 것을 확인할 수 있다.
정보를 한번 조회해보자
import pymysql
connect = pymysql.connect(host='172.26.0.1',
port=3376,
user='root',
password='root',
db='a_db',
charset='utf8')
cur = connect.cursor()
sql = 'show columns from a_db.a_table'
cur.execute(sql)
for row in cur:
print(row)
테이블에 대한 정보가 잘 조회된다
한번 데이터를 뽑아보자
import pymysql
connect = pymysql.connect(host='172.26.0.1',
port=3376,
user='root',
password='root',
db='a_db',
charset='utf8')
cur = connect.cursor()
# sql = 'show tables'
# sql = 'show columns from a_db.a_table'
sql = 'select * from a_db.a_table'
cur.execute(sql)
for row in cur:
print(row)
데이터도 잘 출력되는 것을 확인할 수 있다.
한번 판다스로 뽑아보자.
먼저 판다스를 설치한다
pip install pandas
파이썬으로 설치한 라이브러리 리스트를 보자
pip list
code 폴더에 파이썬 파일을 하나 더 만들자
1_db_to_pandas.py 파일 작성
import pymysql
import pandas as pd
connect = pymysql.connect(host='172.26.0.1',
port=3376,
user='root',
password='root',
db='a_db',
charset='utf8')
cur = connect.cursor()
sql = 'select * from a_db.a_table'
cur.execute(sql)
df = pd.read_sql(sql = sql, con = connect)
print(df)
파일 실행
python 1_db_to_pandas.py
'Database > SQL' 카테고리의 다른 글
[SQL] 데이터 레이크란? (Data Lake) (0) | 2022.08.28 |
---|---|
[SQL] 데이터웨어하우스(DW), 데이터마트 란? (0) | 2022.08.28 |
[SQL] MariaDB 테이블 정보를 쿼리로 확인하는 방법 (0) | 2022.03.13 |
[SQL] MariaDB에서 반복문 사용하는 방법 (0) | 2022.03.12 |
[SQL] MariaDB 데이터베이스 만들고 확인 및 테이블 만들고 확인하기 (0) | 2022.03.12 |