이전 게시글에서 Python에서 pymysql module을 사용하여 MySQL 테이블에 데이터를 삽입하는 방법을 확인하였었다.

이번 게시글에서는 테이블에 저장된 데이터를 검색하여 출력해 본다.

import pymysql

# 변수 선언 부분
conn, cursor = None, None
data1, data2, data3, data4 = "", "", "", ""
row = None

# 메인 코드 부분
conn = pymysql.connect(host='localhost', user='study', password='study', db='studydb', charset='utf8')
cursor = conn.cursor()

cursor.execute("select * from userTable")

print("사용자ID    사용자이름    이메일            출생연도")
print("--------------------------------------------------------")

while (True) :
    row = cursor.fetchone()
    if row == None :
        break;
    data1 = row[0]
    data2 = row[1]
    data3 = row[2]
    data4 = row[3]
    print("%7s   %12s   %15s   %5d" % (data1, data2, data3, data4))

conn.commit()
conn.close()

cmd창에서 수행 결과는 아래와 같다. 역시 idle에서는 실행되지 않았다. 아마 sys.path에 들어있지 않아서 그런 것 같다.

'Python' 카테고리의 다른 글

python mysql 연동  (0) 2023.01.17
[프로그램 1] 다이어몬드 출력  (0) 2023.01.14
Posted by 세상을 살아가는 사람
,

python mysql 연동

Python 2023. 1. 17. 16:48

Python에서 MySQL 데이터베이스를 사용하는 방법을 적어본다.

- 환경

  + Python 3.9.10

  + MySQL : 8.0.29

  + anaconda3에서 pymysql 모듈 설치

- idle에서 파일 작성하여 run module 실행하면 pymysql 모듈이 없다고 동작하지 않음

- cmd 창에서 python Code13-02.py 입력하여 실행하면 정상 동작

[테이블 생성 및 데이터 초기화]

테이블 생성을 위해 사용한 SQL문은 아래와 같다.

create table userTable (
	id varchar(10),
    userName varchar(15),
    email varchar(20),
    birthYear int
);

insert into userTable values ('john', 'John Bann', 'john@naver.com', 1990);
insert into userTable values ('kim', 'Kim Chi', 'kim@daum.net', 1992);
insert into userTable values ('lee', 'Lee Pal', 'lee@paran.com', 1988);
insert into userTable values ('park', 'Park Su', 'park@gmail.com', 1980);

select * from userTable;

[userTable에 사용자 정보를 터미널에서 입력으로 받아 저장] : Code13-01.py

import pymysql

# 변수 선언 부분
conn, cursor = None, None
data1, data2, data3, data4 = "", "", "", ""
sql = ""

# 메인 코드 부분
conn = pymysql.connect(host='localhost', user='study', password='study', db='studydb', charset='utf8')
cursor = conn.cursor()

while (True):
    data1 = input("사용자ID ==> ")
    if data1 == "":
        break;
    data2 = input("사용자이름 ==> ")
    data3 = input("이메일 ==> ")
    data4 = input("출생년도 ==> ")
    sql = "insert into userTable values ('" + data1 + "','" + data2 + "','" + data3 + "','" + data4 + "')"
    cursor.execute(sql)
conn.commit()
conn.close()

cmd 창을 사용하여 Code13-01.py를 실행한 결과는 아래와 같다.

MySQL workbench를 사용하여 데이터를 확인하면 다음과 같이 잘 저장됨을 알 수 있다.

 

'Python' 카테고리의 다른 글

python에서 MySQL 연동하여 테이블 검색  (0) 2023.01.17
[프로그램 1] 다이어몬드 출력  (0) 2023.01.14
Posted by 세상을 살아가는 사람
,

우재남씨가 지은 "파이썬 for Beginner"에 나오는 [프로그램 1] 다이어몬드 출력 문제를 풀어본다.

문제를 분석해 본다. "  "(스페이스)를 출력하는 부분과 "*"(다이어몬드)를 출력하는 부분으로 나누어서 다음과 같이 i가 0에서 부터 8까지 변경될 경우 그에 따른 변화를 테이블로 작성해 보았다.

i 스페이스 from 스페이스 to 다이어몬드 from 다이어몬든 to 비고
0 0 0 3 4-i-1 4 4-i 4 4+i  
1 0 0 2 4-i-1 3 4-i 5 4+i  
2 0 0 1 4-i-1 2 4-i 6 4+i  
3 0 0 0 4-i-1 1 4-i 7 4+i  
4 -1 4-i-1 -1 4-i-1 0 4-i 8 4+i  
5 0 0 0 i-4-1 1 -(4-i) 7 12-i  
6 0 0 1 i-4-1 2 -(4-i) 6 12-i  
7 0 0 2 i-4-1 3 -(4-i) 5 12-i  
8 0 0 3 i-4-1 4 -(4-i) 4 12-i  

다이어몬드를 출력하는 특성상 출력하는 부분이 i가 0~4까지는 4-i부터 4+i까지 출력이 되어야 하고, i가 5~8까지는 -(4-i)부터 12-i까지 출력이 되어야 한다.

이를 스프레드 시트를 사용하여 표현하면 다음과 같이 나타낼 수 있다.

위의 그래프는 별을 출력하는 시작과 끝을 나타내는 것이다. 첫번째(i = 0)부터 다섯번째(i = 4)까지는 시작은 -i + 4로 나타낼 수 있고, 끝은 i + 4로 나타낼 수 있다. 또 다섯번째(i = 4)부터 아홉번째(i = 8)까지는 시작은 i - 4이고 끝은 -i + 12이다.

이는 절대값을 사용하면 최소값은 | i - 4 |, 최대값은 - | i - 4 | + 8로 나타낼 수 있다. 이를 그래프를 나타내는 절대값과  이동, 대칭으로 나타내면 다음 그림과 같다.

y = | x |를 나타내는 그래프를 오른쪽으로 4만큼 이동시키면 시작을 나타내는 수식(함수 y = | x - 4 |)이 되고, 이를 x축으로 대칭을 시켜서 y = - | x - 4 |로 변경하고 또 y축으로 8만큼 이동시키면 끝을 나타내는 수식(함수 y = - | x - 4 | + 8이 된다.

따라서 다이어몬드를 출력하는 프로그램은 다음과 같이 프로그램할 수 있다.

먼저 0~8까지 줄을 나타내는 반복문을 사용하고 다시 스페이스를 출력하는 부분과 다이어먼드를 출력하는 부분으로 나눌 수 있으며, 다이어몬드를 출력하는 시작과 끝을 위의 수식을 사용하여 나타내면 된다.

for i in range(0, 9, 1):
    k = abs(i - 4)
    l = - abs(i - 4) + 8
    for j in range(0, l + 1, 1):
        if j >= k and j <= l:
            print('\u2605', end='')
        else:
            print("  ", end='')
    print("")

이를 실행하면 다음과 같이 다이어몬드를 출력하는 것을 알 수 있다.

하나의 문제를 푸는 것이 이렇게 복잡하고, 이를 설명하는 것이 또한 복잡하다. 또 이렇게 설명을 한다고 했을 때 이해를 잘 할 수 있는지도 궁금하다. 조금더 이해가 될 수 있도록 작성을 해 보았다.

'Python' 카테고리의 다른 글

python에서 MySQL 연동하여 테이블 검색  (0) 2023.01.17
python mysql 연동  (0) 2023.01.17
Posted by 세상을 살아가는 사람
,