2020년 5월 28일 목요일

파이썬에서 데이터베이스(MySQL) 연동하기

파이썬 + MySQL


0. MySQL 설치

     https://bitnami.com/stack/wamp/installer


I. PyMySQL 모듈 설치

     $ pip install PyMySQL


II. MySQL사용법

  1. PyMySql 모듈을 import 한다.

  2. pymysql.connect() 메소드를 사용하여 MySQL에 Connect 한다. 호스트명, 로그인, 암호, 접속할 DB 등을 파라미터로 지정한다.

  3. DB 접속이 성공하면, Connection 객체로부터 cursor() 메서드를 호출하여 Cursor 객체를 가져온다. DB 커서는 Fetch 동작을 관리하는데 사용되는데, 만약 DB 자체가 커서를 지원하지 않으면, Python DB API에서 이 커서 동작을 Emulation 하게 된다.

  4. Cursor 객체의 execute() 메서드를 사용하여 SQL 문장을 DB 서버에 보낸다.

  5. SQL 쿼리의 경우 Cursor 객체의 fetchall(), fetchone(), fetchmany() 등의 메서드를 사용하여 데이타를 서버로부터 가져온 후, Fetch 된 데이터를 사용한다.

    fetchall() : 모든 데이터를 한 번에 클라이언트로 가져온다.
    fetchone() : 한 번에 하나의  row만 가져온다.
    fetchmany(n) : n개의 데이터를 한 번에 가져온다.

  6. 삽입, 갱신, 삭제 등의 DML(Data Manipulation Language) 문장을 실행하는 경우, INSERT/UPDATE/DELETE 후 Connection 객체의 commit() 메서드를 사용하여 데이터를 확정 갱신한다.

  7. Connection 객체의 close() 메서드를 사용하여 DB 연결을 닫는다.

    (예제코드) 

id
name
age
1526
Doldori
125
1533
Haechi
332
1577
Nari
498


1     import pymysql

2     connection = pymysql.connect( host='localhost',
                                                user='admin',
                                                password='',
                                                db='testdb',
                                                charset='utf8' )

3     cursor = connection.cursor()  # Array based cursor
      # cursor = connection.cursor(pymysql.cursors.DictCursor)  # Dictionary based cursor

     sql = "select * from My_Table"
4   cursor.excute(sql)

5    rows = cursor.fetchall()  # Tuple로 반환
     # rows = cursor.fetchall()   # Dictionary로 반환

     for row in rows:
         print(row)
     # Tuple인 경우 : row --> (1526, 'Doldori', 125)
     # Dictionary인 경우 :  row --> {'id': 1526, 'name': 'Doldori', 'age': 125}

     sql = "insert into My_Table(id, name, age) values('1000', 'Gildong', '525')"
6   connection.commit()

     동적 SQL문을 구성하기 위해서 파라미터값이 들어가는 위치에 
     # Parameter Placeholder인 %s (MySql의 경우)를 넣고, execute() 메서드의 
     # 두번째 파라미터에 실제 파라미터값들의 Tuple을 넣어 주면 된다.
     sql = "select * from My_Table where name=%s and age=%s"
     cursor.excute(sql, ('Doldori', 125))

7    connection.close()



출처 : http://pythonstudy.xyz/python/article/202-MySQL-%EC%BF%BC%EB%A6%AC

댓글 없음:

댓글 쓰기

람다 표현식 (Lambda expression)

람다 표현식(Lambda expression)  람다 표현식으로 함수를 정의하고, 이를 변수에 할당하여 변수를 함수처럼 사용한다. (1) 람다 표현식       lambda <매개변수> : 수식      ※ 람다식을 실행하...