You cannot see this page without javascript.

진주성 블로그 방문하기

[python] MySQL 사용법 예제

파이썬에서 PyMySQL을 이용한 MySQL 사용법을 알아보자.

PyMySQL을 설치해야 한다.

1
$ pip install PyMySQL

MySQL 접속 아이디는 user이고, 패스워드는 설정되지 않은 것으로 가정한다.

데이터베이스(database) 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pymysql.cursors
 
conn = pymysql.connect(host='localhost',
        user='user',
        password=None,
        charset='utf8mb4')
 
try:
    with conn.cursor() as cursor:
        sql = 'CREATE DATABASE test'
        cursor.execute(sql)
    conn.commit()
finally:
    conn.close()

테이블(table) 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import pymysql.cursors
 
conn = pymysql.connect(host='localhost',
        user='user',
        password=None,
        db='test',
        charset='utf8mb4')
 
try:
    with conn.cursor() as cursor:
        sql = '''
            CREATE TABLE users (
                id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                email varchar(255) NOT NULL,
                password varchar(255) NOT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8
'''
        cursor.execute(sql)
    conn.commit()
finally:
    conn.close()

데이터 삽입(insert)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pymysql.cursors
 
conn = pymysql.connect(host='localhost',
        user='user',
        password=None,
        db='test',
        charset='utf8mb4')
 
try:
    with conn.cursor() as cursor:
        sql = 'INSERT INTO users (email, password) VALUES (%s, %s)'
        cursor.execute(sql, ('test@test.com', 'my-passwd'))
    conn.commit()
    print(cursor.lastrowid)
    # 1 (last insert id)
finally:
    conn.close()

데이터 조회(select)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pymysql.cursors
 
conn = pymysql.connect(host='localhost',
        user='user',
        password=None,
        db='test',
        charset='utf8mb4')
 
try:
    with conn.cursor() as cursor:
        sql = 'SELECT * FROM users WHERE email = %s'
        cursor.execute(sql, ('test@test.com',))
        result = cursor.fetchone()
        print(result)
        # (1, 'test@test.com', 'my-passwd')
finally:
    conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import pymysql.cursors
 
conn = pymysql.connect(host='localhost',
        user='user',
        password=None,
        db='test',
        charset='utf8mb4')
 
try:
    with conn.cursor() as cursor:
        sql = 'INSERT INTO users (email, password) VALUES (%s, %s)'
        cursor.execute(sql, ('your@test.com', 'your-passwd'))
    conn.commit()
 
    with conn.cursor() as cursor:
        sql = 'SELECT * FROM users'
        cursor.execute(sql)
        result = cursor.fetchall()
        print(result)
        # ((1, 'test@test.com', 'my-passwd'), (2, 'your@test.com', 'your-passwd'))
finally:
    conn.close()

데이터 수정(update)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pymysql.cursors
 
conn = pymysql.connect(host='localhost',
        user='user',
        password=None,
        db='test',
        charset='utf8mb4')
 
try:
    with conn.cursor() as cursor:
        sql = 'UPDATE users SET email = %s WHERE email = %s'
        cursor.execute(sql, ('my@test.com', 'test@test.com'))
    conn.commit()
    print(cursor.rowcount) # 1 (affected rows)
finally:
    conn.close()

데이터 삭제(delete)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pymysql.cursors
 
conn = pymysql.connect(host='localhost',
        user='user',
        password=None,
        db='test',
        charset='utf8mb4')
 
try:
    with conn.cursor() as cursor:
        sql = 'DELETE FROM users WHERE email = %s'
        cursor.execute(sql, ('my@test.com',))
    conn.commit()
    print(cursor.rowcount) # 1 (affected rows)
finally:
    conn.close()

 

번호 제목 날짜 조회 수
140 IPv4, IPv6 2017.11.01 108
139 weblogic wlst 기반 암호화파일 복호화 (AES) 2021.04.06 109
138 Weblogic 보안설정 file 2017.08.25 111
137 HTTP Header 2017.11.01 112
136 법규 - 추가작성 2017.11.01 113
135 디지털 컨텐츠 보호 2017.11.01 113
134 vsphere admin 문서 자료 file 2017.09.09 114
133 /etc/xinetd.conf 설정 값 2017.11.09 114
132 windows_2008_security_guide.pdf file 2017.08.25 116
131 쉘쇼크(Shellshock) 2017.11.07 116
130 winscp for windows file 2017.09.13 118
129 Ipsec for windows file 2017.08.23 126
128 DNS (Domain Name Service) file 2017.11.01 129
127 Ftp passive mode file 2017.08.24 132
126 어플리케이션 보안 file 2017.11.01 133
진주성 블로그 방문하기
CLOSE