220901 오전 수업 pymysql

2022. 9. 1. 20:13카테고리 없음

MariaDB와 HeidiSQL을 사용하기로 했다.

 

한글 깨짐을 막기 위해 use utf8 as default server's chatacter set을 체크

port는 default가 3306인데 3305로 바꿔 설치했다. (port 충돌 막기 위해)

기본으로 설치되는 이 바로가기는 잘 작동하지 않는 경우가 있어서 지워준다. (설치할 때 다시 생김)

 

노란 형광펜 부분들은 건들이면 안되기 때문에 새로 DataBase를 만들었다. 

CREATE DATABASE python;

CREATE TABLE emp(
	e_id		INT,
	e_name 	VARCHAR(20),
	e_sex		VARCHAR(1),
	e_addr	VARCHAR(100)
)

INSERT INTO emp(e_id,e_name,e_sex,e_addr) VALUES ('1','1','1','1');
INSERT INTO emp(e_id,e_name,e_sex,e_addr) VALUES ('2','2','2','2');
INSERT INTO emp(e_id,e_name,e_sex,e_addr) VALUES ('3','3','3','3');
INSERT INTO emp(e_id,e_name,e_sex,e_addr) VALUES ('4','4','4','4');

UPDATE	emp
SET		e_name="6",
			e_sex="6"
WHERE	e_id="4";

DELETE	FROM	emp
WHERE		e_id="4";


SELECT * FROM emp;

이런 저런 sql을 조물조물 해봤다.

pip install pymysql

cmd에서 명령문을 입력하면 라이브러리가 설치된다.

pip는 파이선으로 만든 패키지들을 열람하고 관리할 수 있는 저장소에서 파이선 패키지를 받아 설치하는 패키지 관리도구로 파이선 설치 시 함께 설치된고 한당

스크린샷을 못 찍었는데... 설치한 후에 이클립스를 재부팅하면 바뀐 거 반영할 것임? 물어볼 때 ㅇㅋㅇㅋ 하셈~ 해줘야 사용 가능한 듯....

일반적인 cmd로 되지 않아서 검색>anaconda를 관리자모드로 실행해서 설치하고 재부팅했더니 된다. ㅜ

 

python에서 db에 sql문을 사용하여 select 실행하기

import pymysql
#import 하는 순간 jdbc의 driver의 역할이 되었다고 볼 수 있다.
conn = pymysql.connect(
    host='127.0.0.1', user='root', password='python', db='python', charset='utf8',port=3305)

# statement와 같은 역할 = cursor
cur = conn.cursor()
sql = "select * from emp"
cur.execute(sql)

#java jdbc의 resultSet과 같은 역할
rows=cur.fetchall()
print(rows)

cur.close()
conn.close()

f-string 사용한 sql문 - insert

import pymysql
#import 하는 순간 jdbc의 driver의 역할이 되었다고 볼 수 있다.
conn = pymysql.connect(
    host='127.0.0.1', user='root', password='python', db='python', charset='utf8',port=3305)

# statement와 같은 역할 = cursor
cur = conn.cursor()
sql = "insert into emp (e_id,e_name,sex,addr) values (%s, %s, %s, %s)"
cnt = cur.execute(sql, ('1','1','1','1'))
#java jdbc의 resultSet과 같은 역할
#rows=cur.fetchall()
print("cnt",cnt)
# select에는 필요없으나 insert, delete, update에는 필요한 듯.
# 안하면 DB에 변경사항 저장이 안 되니까?
conn.commit()

cur.close()
conn.close()

f-string 사용한 sql문 - update

import pymysql
 
con = pymysql.connect(host='localhost', user='root', password='python',
                       db='python', charset='utf8',port=3305) 
 
cur = con.cursor()
new_c="e_name"
new_v="9"
std_c="e_id"
std_v="1"

sql = f"update emp set {new_c}='{new_v}' where {std_c}='{std_v}'"
cnt = cur.execute(sql)

print("cnt",cnt)

con.commit()

cur.close() 
con.close()

f-string 사용한 sql문 - delete

 

import pymysql
 
con = pymysql.connect(host='localhost', user='root', password='python',
                       db='python', charset='utf8',port=3305) 
 
cur = con.cursor()
std_c="e_id"
std_v="1"

sql = f"delete from emp where {std_c}='{std_v}'"
cnt = cur.execute(sql)

print("cnt",cnt)

con.commit()

cur.close() 
con.close()

 

좀 할만한 것 같기도..?