728x90
반응형
* 본 포스팅은 한국품질재단에서 주최하는 인공지능개발자 양성사업 교육과정 복습 용도로 포스팅되었습니다
* Maria DB 준비하기
Download MariaDB Server - MariaDB.org
REST API MariaDB Repositories Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server"
mariadb.org
- 설치 시, 비밀번호 정하시고, 체크 버튼 다 눌러주기(안눌러주면 원격 접속 불가!! **)
* Maria DB 사용하기
- 테이블 생성 : CREATE TABLE 테이블명 ( '변수명' 변수타입 );
CREATE TABLE `users_tbl` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '내부관리ID',
`uid` VARCHAR(64) NOT NULL COMMENT '회원ID' COLLATE 'utf8_general_ci',
`upw` VARCHAR(64) NOT NULL COMMENT '회원PW' COLLATE 'utf8_general_ci',
`name` VARCHAR(64) NOT NULL COMMENT '회원이름' COLLATE 'utf8_general_ci',
`regdate` TIMESTAMP NOT NULL DEFAULT current_timestamp() COMMENT '가입일',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uid` (`uid`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
- DB에 미리 ID,PW 데이터 삽입하기
# 데이터 삽입
INSERT INTO `python_db`.`users_tbl` (`uid`, `upw`, `name`, `regdate`) VALUES
('guest', '1', '게스트', '2021-06-10 10:23:50');
* __init__.py 준비하기
- 파이썬에 DB 연동
- pymysql 이용
- https://pypi.org/project/PyMySQL/
PyMySQL
Pure Python MySQL Driver
pypi.org
import pymysql as my
# 회원이면 dict 형태로 전달(리턴)
# 회원아니면 None 형태로 전달(리턴)
def selectUsers(uid, upw):
row = None # 쿼리 결과
connection = None
try:
connection = my.connect(host ='localhost', #루프백주소, 자기자신주소
user ='root', #DB ID
password ='DBPW', # 사용자가 지정한 비밀번호
database ='python_db',
cursorclass = my.cursors.DictCursor #딕셔너리로 받기위한 커서
)
cursor = connection.cursor()
sql = ''' #로그인 실행문
SELECT
*
FROM
users_tbl
WHERE
uid=%s
AND
upw=%s;
'''
cursor.execute(sql, (uid, upw)) # 커리 실행
row = cursor.fetchone()
#print( row )
except Exception as e:
print('접속오류', e)
finally:
if connection:
connection.close()
print('종료')
# 결과를 리턴한다.
return row
if __name__ == '__main__':
# 테스트
row = selectUsers('guest','1')
print('쿼리회원조회결과 : ', row)
#비회원 테스트(회원이 아님, 비번이 틀림, 아이디 틀림)
row = selectUsers( 'guest', '2')
print('회원조회결과 : ', row)
- 실행결과
* run.py : 서버 소스코드
from flask import Flask , request, render_template, redirect
from db import selectUsers #현재 소스폴더의 경로에 db라는 폴더(패키지)안에 있는
# __init__.py 파일안에 정의된 selectUser 함수를 임포트
app = Flask(__name__)
@app.route('/') # 요청
def home(): # 응답
return render_template('index.html') #홈페이지 디자인
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html') #홈페이지 디자인
else:
uid = request.form.get('uid')
upw = request.form.get('upw')
# 2. 아이디, 비번을 가지고 데이터베이스에 쿼리를 수행 (사전에 이미 가입이 되어 있어야 한다...)
row = selectUsers( uid, upw )
# 3. 수행결과를 받는다.
if row:
# 4. 회원이면 -> 서비스 페이지 이동 -> 리다이렉트
return redirect('/')
else:
# 5. 회원아니면 -> 아이디 혹은 비번이 틀립니다. -> 다시 로그인 화면으로 리턴...
return '''
<script>
// 경고창
alert("로그인 실패, 다시 시도하세요")
// 이전페이지로 이동
history.back()
</script>
'''
if __name__ == '__main__':
app.run(debug=True)
* 주소창 : 127.0.0.1/login
-> 아이디, 비밀번호 DB에 있는 데이터와 일치하다면 -> redirect()함수 호출, homepage로 이동
-> 아이디, 비밀번호 DB에 있는 데이터와 일치하지 않다면 -> 스크립트 동작
728x90
반응형
'Python' 카테고리의 다른 글
[파이썬] Flask, 파이썬 웹 만들어보기 (0) | 2021.06.09 |
---|---|
[파이썬] 파이썬 배열의 특징, 슬라이싱, 인덱싱 (0) | 2021.06.03 |
[파이썬] 파이썬, Numpy 사용해보기 (0) | 2021.06.02 |
[파이썬] 파이썬 Pandas 사용해보기 (0) | 2021.06.02 |
파이썬 웹 크롤링으로 데이터 획득하기(파이썬 초보) (0) | 2021.05.31 |