/ PYTHON

Python(2) - MySQL 연결

Python 관련 포스팅

1. pymysql 설치

$ pip install pymysql 입력

2. DB 연결

  • import
  • connect()에 DB 기본 정보 입력
    import pymysql
    conn = pymysql.connect(host="localhost", user="root", password="1234", db="dbpractice", charset="utf8")
    

3. cursor 설정

  • cursor()로 cursor 가져오기
    • 실행 결과가 tuple로 반환됨
        curs = conn.cursor()
      
    • 실행 결과를 dictionary로 반환하려면,
      parameter로 pymysql.cursors.DictCursor 전달
        curs = conn.cursor(pymysql.cursors.DictCursor)  
      

tuple 자료형
→ 요솟값이 ()에 둘러싸임
t3 = (1, 2, 3)

dictionary 자료형
→ Key : Value 쌍 여러 개가 쉼표(,)로 구분되어 { }로 둘러싸여 있음
→ Key에는 변하지 않는 고윳값을 사용
→ Value에는 문자열과 리스트 모두 사용 가능
{Key1:Value1, Key2:Value2, Key3:Value3, …}

4. CRUD query문 작성

  • execute()에 작성
  • 사용할 db 선언(USE) 후 용도에 맞는 query문 작성 시작
    'USE [사용할 DB이름];'

      curs.execute('USE dbpractice;') # cursor를 가져온 상태에서 sql문을 실행
    

(1) INSERT

  • execute()에 query문 작성 후, commit()close()를 실행
    curs.execute('INSERT INTO user (id, name, region, insdt) VALUES("hong", "홍길동", "서울", now());')
    conn.commit()
    conn.close()
    
  • sql 변수를 만들어 query문 쓰는 방법
    sql = "INSERT INTO user (id, name, region, insdt) VALUES('hong2', '홍길동2', '서울2', now())" 
    curs.execute(sql) 
    conn.commit()
    conn.close()
    

(2) SELECT

sql = "SELECT * FROM user"
curs.execute(sql) 
rows = curs.fetchall() # 실행한 데이터를 가져옴
print(rows) # 모든 행을 가져옴
conn.close()
sql = "SELECT * FROM user WHERE region=%s"
curs.execute(sql) 
curs.execute(sql, '서울') # %s에 들어갈 문자열을 추가함
rows = curs.fetchall() # 실행한 데이터를 가져옴
print(rows[2], ["region"]) # 특정 행, 열의 내용을 가져옴
conn.close()
  • fetchall(): 모든 레코드를 가져옴
  • fetmany(): 지정한 개수만큼의 레코드를 가져옴
  • fetchone(): 하나의 레코드만 가져옴

(3) UPDATE

sql = "UPDATE user SET name='포로리' WHERE name='테스트'"
curs.execute(sql)
conn.commit()
conn.close()

(4) DELETE

sql = "DELETE FROM user WHERE name='홍길동'"
curs.execute(sql)
conn.commit()
conn.close()