본문 바로가기

나 취준생/파이썬

MYSQL, 파이썬 연동

320x100

# MYSQL 설치 후 기본 문법


1. mysql commend line client 실행


2. enter password: oracle ( 자기 비밀번호 )


3. create database orcl ( DB 이름 )


4. use orcl


5. 자기가 갖고 있는 테이블 쿼리문 입력


6. 테이블 확인


select * from emp;



# 오라클과 MYSQL 함수 비교


 오라클       ---      MYSQL

1.       nvl                    ifnull

2.     sysdate              sysdate()

3. months_between    group_concat

4.    decode                   if

5.    rollup                with rollup

6.    listagg             group_concat


예제 : 이름, 커미션을 출력하는데 커미션이 null인 사람은 0으로 출력하기


select ename, ifnull(comm,0)

 from emp;



 

예제 : 오늘 날짜를 출력하기


select sysdate();



* MYSQL은 dual이 없다.


예제 : 부서 번호별 토탈 월급을 출력하는데 맨 아래에 전체 월급이 출력되게 하기


select deptno, sum(sal)

 from emp

 group by deptno with rollup;




# group_concat을 이용해서

  부서번호, 부서번호별 사원들의 이름을 가로로 출력하기


select deptno, group_concat(ename)

from emp

group by deptno;




#########지금부터 가장 중요###########


# scott의 월급을 0으로 변경하기


update emp

set sal=0

where ename='scott';



# 다시 rollback 하고 월급 확인하기


rollback;


select ename, sal

 from emp

 where ename='scott';



***** mysql은 오라클과 다르게 기본 자동 commit이 활성화 되어있다.

그래서 자동 commit 때문에 rollback도 할 수 없다 ******



# 자동 커밋 활성화 확인하기


select @@autocommit;



* 1이면 on, 0이면 off 상태이다.


# 자동 커밋 비활성화 후 확인


set autocommit = FALSE;

select @@autocommit;



# 비활성화 후 king의 월급을 0으로 바꾸고, rollback 해보기


update emp

set sal=0

where ename='king';


select ename,sal

from emp

where ename='king';


rollback;


select ename,sal

from emp

where ename='king';





# MYSQL과 파이썬 연동하기


1. 아나콘다 프롬프트 창을 열고, pymysql 패키지를 설치


2. conda install pymysql 입력



3. pymysql 활용한 코드


예제 : emp 테이블에서 사원 이름과 월급 출력하기


import pymysql

import pandas as pd
conn = pymysql.connect(host="localhost", user="root",password="oracle", db="orcl",charset="utf8")
curs = conn.cursor()
sql = "select * from emp"
curs.execute(sql)
rows = curs.fetchall()
colname = curs.description
col = []
for i in colname:
    col.append(i[0].upper())
emp = pd.DataFrame(list(rows),columns=col)
print(emp[['ENAME', 'SAL']] )


 예제 : 직업별 토탈 월급 출력하기


import pymysql

import pandas as pd
conn = pymysql.connect(host="localhost", user="root",password="oracle", db="orcl",charset="utf8")
curs = conn.cursor()
sql = "select job, sum(sal) from emp group by job"
curs.execute(sql)
rows = curs.fetchall()
colname = curs.description
col = []
for i in colname:
    col.append(i[0].upper())
emp = pd.DataFrame(list(rows),columns=col)
print(emp)



반응형