파이썬으로 MySQL을 연동하기 위해서는 pymysql 라이브러리를 설치해야 한다.
# 터미널로 실행하기
pip install pymysql
pip 로 설치가 완료 되었다면 python 으로 코드 실행하기
import pymysql
파이썬과 MySQL의 연동방식
pymysql 라이브러리를 이용하면 파이썬과 MySQL을 연동하는 데이터베이스 연동 프로그램을 작성할 수 있다.
파이썬에서 데이터 입력하기
- 1. MySQL 연결하기
연결자 = pymysql.connect(연결 옵션) - 커서 생성하기
커서 이름 = 연결자.cursor() - 테이블 만들기
커서이름.execute("CREATE TABLE 문장") - 데이터 입력하기
커서이름.execute("INSERT 문장") - 입력한 데이터 저장하기
연결자.commit() - MySQL 연결 종료하기
연결자.close()
단계별 MySQL 연결을 위한 코드 작성하기
1. MySQL 연결
pymysql.connect(host = 서버IP주소, user = 사용자, password = 암호, db = 데이터베이스, charset = 문자세트)
conn = pymysql.connect(host = "127.0.0.1", user = "root", password = "root",
db = "soloDB", charset = "utf8")
conn : 연결자를 의미하는 connection의 약자로 관습적으로는 conn 혹은 con이라는 변수명을 주로 사용한다.
2. 커서 생성
커서(cursor) : 데이터베이스에 sql문을 실행하거나 실행된 결과를 받는 통로이다.
커서는 앞 단계에서 생성한 연결자에 만들어야 한다.
cur = conn.cursor()
3. 테이블 생성
테이블을 실행하는 sql문을 커서이름.execute() 함수의 매개변수로 전달한다.
cur.execute("""
CREATE TABLE userTable (
id char(4),
userName char(15),
email char(20),
birthYear int
);
""")
4. 데이터 입력
cur.execute("""
INSERT INTO userTable VALUES("hong", "홍지윤", "hong@naver.com", 1996);
""")
cur.execute("""
INSERT INTO userTable VALUES("kim", "김태연", "kim@naver.com", 2011);
""")
cur.execute("""
INSERT INTO userTable VALUES("star", "별사랑", "star@naver.com", 1990);
""")
cur.execute("""
INSERT INTO userTable VALUES("yang", "양지은", "yang@naver.com", 1993);
""")
5. 입력한 데이터 저장
앞 단계에서 입력한 데이터가 아직 데이터베이스에 완전히 반영되지 않았다.
현재까지의 입력 데이터를 완전히 데이터베이스에 반영하는 것을 커밋(commit)이라고 한다.
conn.commit()
6. 연결 종료
데이터베이스 사용 후에는 연결자를 닫아줘야 한다.
conn.close()
연동 프로그래밍 전체코드
conn = pymysql.connect(host = "127.0.0.1", user = "root", password = "root",
db = "soloDB", charset = "utf8")
cur = conn.cursor()
user_id = input("사용자 ID ==> ")
user_name = input("사용자 이름 ==> ")
user_email = input("사용자 이메일 ==> ")
user_birth = input("사용자 출생연도 ==> ")
sql = f"""INSERT INTO userTable VALUES('{user_id}', '{user_name}', '{user_email}', '{int(user_birth)}')"""
cur.execute(sql)
conn.commit()
conn.close()
데이터 조회
1. MySQL 연결하기
연결자 = pymysql.connect(연결 옵션)
2. 커서 생성하기
커서 이름 = 연결자.cursor()
3. 데이터 조회하기
커서이름.execute("SELECT 문장")
4. 조회한 데이터 출력하기
커서이름.fetch
fetch 에는 3가지 종류가 있다.
- fetchone() : 한 행row만 가져오는 함수이다.
- fetchall() : 모든 row를 가져오는 함수이다.
- fetchmany(size = ) : size 만크의 row를 가져오는 함수이다.
5. MySQL 연결 종료하기
연결자.close()
조회는 데이터를 입력하거나 변경하는 것이 아니므로 굳이 저장(커밋)을 할 필요는 없다.
데이터를 조회하는 코드 작성하기
conn = pymysql.connect(host = "127.0.0.1", user = "root", password = "root",
db = "soloDB", charset = "utf8")
cur = conn.cursor()
cur.execute("SELECT * FROM userTable")
print("사용자ID\t사용자이름\t이메일\t출생년도")
print("-" * 40)
while True:
row = cur.fetchone()
if row == None:
break
print(f"{row[0]}\t{row[1]}\t{row[2]}\t{row[3]}")
conn.close()
with 문을 사용해서 코드 작성하기
with pymysql.connect(host = "127.0.0.1", user = "root", password = "root",
db = "soloDB", charset = "utf8") as conn:
with conn.cursor() as cur:
cur.execute("SELECT * FROM userTable")
print("사용자ID\t사용자이름\t이메일\t출생년도")
print("-" * 40)
while True:
row = cur.fetchone()
if row == None:
break
print(f"{row[0]}\t{row[1]}\t{row[2]}\t{row[3]}")'Python' 카테고리의 다른 글
| 파이썬 동적 크롤링 (1) | 2023.05.11 |
|---|---|
| 파이썬 정적 크롤링 (0) | 2023.05.10 |
| 파이썬 웹 크롤링 (1) | 2023.05.10 |
| 파이썬 상속 (0) | 2023.05.10 |
| 파이썬 프라이빗 변수와 getter, setter (1) | 2023.05.10 |