■ 공부/MySQL

[python][회원가입/로그인] 데이터베이스와 python 연동

J U N E 2024. 3. 26. 17:22

문법 배운 기념으로다가..

만들어 둔 member테이블 가지고 회원가입/로그인 프로그램을 만들어 봤다.

 

import pymysql

conn = pymysql.connect(host='localhost', user='root', password='1234', db='kdt', charset='utf8')
cur = conn.cursor()

def signUp():
    userid = input('아이디 입력.')
    cur.execute("SELECT userid FROM member WHERE userid=%s", (userid,))
    result = cur.fetchone()
    if (result):
        print('이미 존재하는 아이디입니다. 로그인 해 주세요.')
    else:
        userpw = input('비밀번호 입력.')
        name = input('이름 입력.')
        hp = input('휴대폰번호 입력.')
        email = input('이메일 입력.')
        gender = input('성별 입력.')
        ssn = input('주민번호 입력.')
        ssn1 = ssn[:6]
        ssn2 = ssn[6:]
        zipcode = input('우편번호 입력.')
        address1 = input('자택주소 입력(동 까지)')
        address2 = input('건물명 입력')
        address3 = input('동호수 입력(없으면 엔터)')

        cur.execute("INSERT INTO member (userid, userpw, name, hp, "
                   "email, gender, ssn1, ssn2, zipcode, address1, address2, address3, regdate) values "
                   "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,now())", (userid, userpw, name, hp, email, gender,
                                                     ssn1, ssn2, zipcode, address1, address2,
                                                     address3))
        conn.commit()
        print('가입완료')
        conn.close()

def logIn():
    userid = input('아이디를 입력해주세요.')
    userpw = input('비밀번호를 입력해주세요.')

    cur.execute("SELECT userid, userpw FROM member WHERE userid=%s AND userpw=%s", (userid, userpw))
    result = cur.fetchone()
    if (result):
        print(f'{userid}님, 환영합니다.')
    else:
        print('정보가 일치하지 않습니다. 다시 확인해 주세요.')


#----------------------------------------------------------------------------------------

menu = input('1.회원가입 2.로그인')
if (menu == '1'):
    signUp()
elif (menu == '2'):
    logIn()

 

 

가입 후 로그인까지 완료-

다행히 대략적인 문법은 자바할 때와 크게 다르지 않아서

뭐.. 초큼.. 뚱땅 절었지만..

하지만 완성했쥬? 

 

 

■ 새로 습득한 것들:

cursor()
cursor() 함수는 데이터베이스 커서(cursor) 객체를 생성합니다. 커서는 데이터베이스 연결을 통해 SQL 쿼리를 실행하고 결과를 가져오는 데 사용됩니다. 커서를 사용하여 쿼리를 실행하고 결과를 검색할 수 있습니다.
일반적으로 다음과 같은 과정을 거칩니다:
1. 데이터베이스에 연결합니다.
2. cursor() 함수를 호출하여 커서 객체를 생성합니다.
3. 생성된 커서를 사용하여 SQL 쿼리를 실행합니다.
4. 실행된 쿼리의 결과를 검색합니다.
5. 작업을 완료한 후에는 연결을 닫습니다.

 

fetchone()
fetchone()은 SQLite 데이터베이스에서 쿼리 결과 집합에서 다음 행(row)을 가져오는 메서드입니다.
이 메서드를 호출하면 현재 커서(cursor) 위치의 다음 행을 가져옵니다.
일반적으로 이 메서드는 SELECT 쿼리를 실행한 후에 사용됩니다. SELECT 쿼리는
여러 개의 행을 반환할 수 있으므로, fetchone()을 호출하여 한 번에 한 행씩 결과를 가져올 수 있습니다.
fetchone()은 결과가 더 이상 없을 때 None을 반환합니다.

 

fetchall()
메서드는 커서가 가리키는 모든 결과 행을 가져옵니다. 이 메서드는 결과 집합을 모두 가져와서 리스트로 반환합니다.
rows = cur.fetchall()
for row in rows:
    print(row)

 

fetchmany()
fetchmany(size)
메서드는 지정된 개수(size)만큼의 결과 행을 가져옵니다. 이 메서드는 결과 집합에서
size만큼의 행을 가져와서 리스트로 반환합니다.
rows = cur.fetchmany(size=5)
for row in rows:
    print(row)

 

변경사항 데이터베이스에 반영해야 할 때 commit() 잊지말고-

회원가입시에는 전체 한꺼번에 insert를 해야함.

쿼리 전달할 때는 물음표 아님! %s로 바인딩 할 것 (SQLite3는 ? 인거 같더라..)

'■ 공부 > MySQL' 카테고리의 다른 글

DAY 4. DB를 이용한 단어장 만들기  (0) 2024.03.29
DAY 3. My SQL 주요 문법 정리 (2)  (0) 2024.03.27
DAY 2. MySQL 주요 문법 정리 (1)  (0) 2024.03.26
DAY 1. DATABASE  (0) 2024.03.25