본문 바로가기

파이썬/수업내용

[Python]DB (MySQL) 설치 및 연동 하기 / SELECT, INSERT, UPDATE, DELETE

DB 

 

서버 가상화 

라운드 로빈 방식 

서버가 죽을것 같으면 다른 서버로 보냄 

 

DB 종류 

 

  RDB(관계형 DB) NOSQL
DB 종류 Oracle, mySQl, MariaDB, PostgreSQl MongoDB, Firebase
특징 오라클로 MySQL이 들어감  join을 하지 않아도 됨, 따라서 속도가 빠르다.

오라클로 MySQL이 들어감 

 

mariadb & HeidiSQL

download 및 사용해보기

 

mariadb download 

HeidiSQL download 및 사용



pass : python


MYSQL과 같은 port와 같기 때문에 3305로 변경 
바탕화면에 있는 거 삭제 하기
다운로드 된거 다시 깔기 
   
   

오라클과 똑같다 

데이터 베이스 생성 
    테이블 생성 
데이터 추가
    업데이트 

삭제 

 

 

pymysql 라이브러리 설치하기

파이썬 자체에는 MySQL을 인식하는 기능이 없습니다. 파이썬 코드에서 MySQL을 활용하기 위해 외부 라이브러리인 pymysql을 설치해야합니다.

1. windows + R을 누른 후에 실행 창에서 cmd를 입력하고 [확인] 버튼을 클릭합니다.

 

2. 명령 프롬프트가 나타나면 다음 명령어를 실행해서 pymysql을 설치합니다. ‘Successfully installed pymysql-x.x.x’와 같은 메시지가 나오면 성공입니다. WARNING 메시지는 무시하세요

pip install pymysql

  • pip install은 외부 라이브러리를 설치하는 명령입니다. 지금은 pymysql 라이브러리를 설치했지만, 필요하다면 다른 라이브러리도 동일한 방식으로 설치할 수 있습니다.

3. 이제부터는 파이썬에서 MySQL과 관련된 기능을 사용할 수 있습니다. 다음 명령을 입력해서 명령 프롬프트를 종료합니다.

 

 

파이썬과 MySQL 데이터베이스 연동하기

 - select 

import pymysql


con = pymysql.connect(host='127.0.0.1', port=3305,  user='root',
    passwd='python', db='python', charset='utf8')

# 커서 생성 / 자바에서 Statement와 비슷하다.
cur = con.cursor()

# 쿼리 실행 예시
sql = "SELECT * FROM Emp"
cur.execute(sql)

# 쿼리 결과 가져오기 / 
row = cur.fetchall()# 여러개 가져오는 것 
print(row)
# 결과 출력


# 연결과 커서 닫기
cur.close()
con.close()

튜플 

json으로 가져오는 방법 (주로  사용하는 방법)

import pymysql


con = pymysql.connect(host='127.0.0.1', port=3305,  user='root',
    passwd='python', db='python', charset='utf8')

# 커서 생성 / 자바에서 Statement와 비슷하다.
cur = con.cursor(pymysql.cursors.DictCursor)
#{'e_id': 1, 'e_name': '1', 'gen': '1', 'addr': '1'} : 딕셔너리 {}를 하나의 객체로 봄

# 쿼리 실행 예시
sql = "SELECT * FROM Emp"
cur.execute(sql)

# 쿼리 결과 가져오기 / 
row = cur.fetchall() # 여러개 가져오는 (한번에 여러개를 가져오는게 속도가 더 빠름)
print(row)
# 결과 출력


# 연결과 커서 닫기
cur.close()
con.close()

 

-insert 1

import pymysql

#MySql 서버 연결
con = pymysql.connect(host='127.0.0.1', port=3305,  user='root',
    passwd='python', db='python', charset='utf8')


# 커서 생성 / 자바에서 Statement와 비슷하다.
cur = con.cursor(pymysql.cursors.DictCursor)

# 데이터 삽입 쿼리 작성 
sql = "INSERT INTO Emp(e_id, e_name, gen, addr) VALUES(4,'4','4','4')"

#쿼리 실행
cur.execute(sql)

#변경사항 컴잇
con.commit()

#연결 종료
con.close()

-insert 2

import pymysql

#MySql 서버 연결
con = pymysql.connect(host='127.0.0.1', port=3305,  user='root',
    passwd='python', db='python', charset='utf8')


# 커서 생성 / 자바에서 Statement와 비슷하다.
cur = con.cursor()

e_id = 5
e_name = "5"
gen = "5"
addr = "5"

# 데이터 삽입 쿼리 작성  / """  """ 로 작성하면 다음줄로 띄우는게 가능하다 즉, 멀티 라인을 지원함 
#f를 앞에 작성하고 '{}' 안에 변수명(컬럼명)을 작성해 주면 된다.
sql = f"""
INSERT INTO Emp
    (e_id, e_name, gen, addr) 
VALUES
    ('{e_id}','{e_name}','{gen}','{addr}')"""
         

#쿼리 실행
cnt = cur.execute(sql)
print("cnt : ",cnt) # 몇개가 들어 갔는지 알수 있도록 
#변경사항 컴잇
con.commit()

#연결 종료
cur.close()
con.close()

 

-update

import pymysql

#MySql 서버 연결
con = pymysql.connect(host='127.0.0.1', port=3305,  user='root',
    passwd='python', db='python', charset='utf8')


# 커서 생성 / 자바에서 Statement와 비슷하다.
cur = con.cursor()

e_id = 6
e_name = "7"
gen = "7"
addr = "7"

# 데이터 삽입 쿼리 작성  / """  """ 로 작성하면 다음줄로 띄우는게 가능하다 즉, 멀티 라인을 지원함 
#f를 앞에 작성하고 '{}' 안에 변수명(컬럼명)을 작성해 주면 된다.
sql = f"""
UPDATE Emp SET e_name ='{e_name}', gen ='{gen}', addr='{addr}'
  WHERE e_id ='{e_id}'"""
         

#쿼리 실행
# 몇개가 들어 갔는지 알수 있도록 
# 방법1
cnt = cur.execute(sql)
# 방법2 
#cnt = cur.rowcount
cur.execute(sql)
print("cnt : ",cnt)

#변경사항 컴잇
con.commit()

#연결 종료
cur.close()
con.close()

 

-delete 

import pymysql

#MySql 서버 연결
con = pymysql.connect(host='127.0.0.1', port=3305,  user='root',
    passwd='python', db='python', charset='utf8')


# 커서 생성 / 자바에서 Statement와 비슷하다.
cur = con.cursor()

e_id = 6


# 데이터 삽입 쿼리 작성  / """  """ 로 작성하면 다음줄로 띄우는게 가능하다 즉, 멀티 라인을 지원함 
#f를 앞에 작성하고 '{}' 안에 변수명(컬럼명)을 작성해 주면 된다.
sql = f"""
DELETE FROM Emp 
WHERE e_id = '{e_id}'"""
         

#쿼리 실행
# 몇개가 들어 갔는지 알수 있도록 
# 방법1
cnt = cur.execute(sql)
# 방법2 
#cnt = cur.rowcount
cur.execute(sql)
print("cnt : ",cnt)

#변경사항 컴잇
con.commit()

#연결 종료
cur.close()
con.close()