Microsoft PowerPoint Python-WebDB

Similar documents
Microsoft PowerPoint Python-Web.pptx

Microsoft PowerPoint Python-DB

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

2009년 상반기 사업계획

MySQL-.. 1

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PHP & ASP

PowerPoint Template


Microsoft PowerPoint - 10Àå.ppt

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

DBMS & SQL Server Installation Database Laboratory

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

HTML5

윈도우시스템프로그래밍

슬라이드 1

하둡을이용한파일분산시스템 보안관리체제구현

10.ppt

歯sql_tuning2

SK Telecom Platform NATE

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PHP & ASP

Javascript

윈도우시스템프로그래밍

13주-14주proc.PDF

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

문서 템플릿

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Discrete Mathematics

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

Relational Model

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

강의 개요

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

EDB 분석보고서 (04.06) ~ Exploit-DB( 에공개된별로분류한정보입니다. Directory Traversal users-x.php 4.0 -support-x.php 4.0 time-

untitled

14-Servlet

PowerPoint 프레젠테이션

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

3장

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Microsoft PowerPoint MySQL 연동.ppt

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

PowerPoint 프레젠테이션

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

Chapter 1

최종보고서 데이터베이스의취약점분석과해결책 제출일자 : 2012년 5월 00일과목명 : 캡스톤디자인팀명 : DIS 팀장 : 강연준팀원 : 강연준 조응철담당교수 : 양환석교수님

쉽게 풀어쓴 C 프로그래밍

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

90

빅데이터분산컴퓨팅-5-수정

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

Microsoft Word - Windows_apahce_php_CUBRID2008

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

슬라이드 제목 없음

USER GUIDE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

DocsPin_Korean.pages

sms_SQL.hwp

Data Provisioning Services for mobile clients

웹 개발자를 위한 서블릿/JSP

EDB 분석보고서 (04.03) ~ Exploit-DB( 에공개된별로분류한정보입니다. ** 5개이상발생한주요소프트웨어별상세 EDB 번호 종류 공격난이도 공격위험도 이름 소프트웨어이름 3037 SQL Inj

PowerPoint 프레젠테이션

MySQL-Ch05

Cookie Spoofing.hwp

Microsoft PowerPoint 웹 연동 기술.pptx

Javascript

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

PowerPoint 프레젠테이션

Microsoft PowerPoint Python-Function.pptx

뇌를 자극하는 JSP & Servlet 슬라이드

Microsoft Word - WETHXCNIMNSI.doc

초보자를 위한 ADO 21일 완성

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

ALTIBASE HDB Patch Notes

제목을 입력하세요.

Spring Boot/JDBC JdbcTemplate/CRUD 예제

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Microsoft PowerPoint 세션.ppt

개발문서 Oracle - Clob

SBR-100S User Manual

슬라이드 1

PowerPoint Template

Windows 8에서 BioStar 1 설치하기

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 04-UDP Programming.ppt

Tablespace On-Offline 테이블스페이스 온라인/오프라인

5장 SQL 언어 Part II

4S 1차년도 평가 발표자료

LXR 설치 및 사용법.doc

Transcription:

8. 웹과데이터베이스연결응용 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 파이썬과데이터베이스연결 웹과데이터베이스연결 로그인페이지예 순천향서핑대회예 순천향대학교컴퓨터공학과 2

파이썬과 SQLite3 연결 sqlite3 모듈을사용하여파이썬과 SQLite3 데이테베이스연동프로그램작성 데이터베이스연결을오픈, 종료및내보내기 sqlite3.connect(filename) filename: 데이터베이스파일 데이터베이스파일이없으면새로운파일을생성 연결오픈이성공하면연결객체 (connection object) 를리턴 connection.close() 데이터베이스연결종료 connection.commit() 데이터베이스로내보내기 (commit) 이를실행하지않으면수정된내용이데이터베이스에반영되지않음 순천향대학교컴퓨터공학과 3 import sqlite3 conn = sqlite3.connect( connect('member.db db') print("opened database successfully"); conn.close() 순천향대학교컴퓨터공학과이상정 4

SQL 실행 SQL 문을실행하기위해서는연결객체를사용하여커서객체 (cursor object) 를생성하고, 이를통해 SQL문을실행 커서객체생성 connection.cursor() 커서객체를리턴 SQL 문실행 cursor.execute(sql) sql: SQL 문 순천향대학교컴퓨터공학과 5 회원가입데이터베이스예 웹접속을위한회원가입데이터베이스예 데이터베이스이름 : member.db 테이블이름 : meminfo 필드 ( 열 ) 계정이름 : id, 텍스트 / primary key 패스워드 : passwd, 텍스트 이름 : name, 텍스트 가입시간 : time, 텍스트 meminfo 테이블생성 create table meminfo (id text primary key, passwd text, name text, time text); 순천향대학교컴퓨터공학과 6

SQL 실행 테이블생성 import sqlite3 conn = sqlite3.connect('member.db') print("opened database successfully"); cursor = conn.cursor() cursor.execute(''' create table meminfo (id text primary key, passwd text, name text, time text); ''') print("table created successfully"); conn.commit() conn.close() 순천향대학교컴퓨터공학과이상정 7 시험주행 순천향대학교컴퓨터공학과 8

SQL 실행 행삽입 (1) 2 개의행삽입예 남운영, wynam, n1234 insert into meminfo (id, passwd, name, time) values ( 'wynam', 'n1234', ' 남운영 ', '2015-05-01 13:40:50'); 김은해, ehkim, k1234 insert into meminfo (name, id, passwd, time) values ( 'ehkim', 'k1234', ' 김은해 ', '2015-05-01 13:50:10'); cursor.execute() 행삽입실행 보안을위해행삽입시직접데이터값입력대신? 로표시하고, 대응되는변수나열 순천향대학교컴퓨터공학과 9 SQL 실행 행삽입 (2) cursor.execute() 행삽입예 id1 = 'wynam' pwd1 = 'n1234' name1 = ' 남운영 ', 'gdhong', 'h1234', datetime ('now', 'localtime')); time1 = datetime.datetime.now() cursor.execute(''' insert into meminfo (id, passwd, name, time) values(?,?,?,?)''', (id1, pwd1, name1.encode("cp949"), time1)) 한글저장시윈도우프롬트창에서표시되도록 cp949 로인코드 cp949 는마이크로소프트에서사용하는한글코드 순천향대학교컴퓨터공학과 10

컴퓨터와 import sqlite3 현대기술 import datetime conn = sqlite3.connect('member.db') print("opened database successfully"); cursor = conn.cursor() cursor() id1 = 'wynam' pwd1 = 'n1234' name1 = ' 남운영 ' time1 = datetime.datetime.now() cursor.execute(''' insert into meminfo (id, passwd, name, time) values(?,?,?,?)''', (id1, pwd1,name1.encode("cp949"), time1)) print("first user inserted"); id2 = 'ehkim' pwd2 = 'k1234' name2 = ' 김은해 ' time2 = datetime.datetime.now() cursor.execute(''' insert into meminfo (id, passwd, name, time) values(?,?,?,?)''', (id2, pwd2, name2.encode("cp949"), time2)) print("second user inserted"); conn.commit() conn.close() 순천향대학교컴퓨터공학과이상정 11 시험주행 순천향대학교컴퓨터공학과 12

SQL 실행 데이터조회 데이터가져오기 cursor.fetchone() SQL 질의결과로생성된하나의행을가져옴 cursor.fetchall() SQL 질의결과로생성된모든행을가져옴 데이터조회예 cursor.execute( execute(''' select * from meminfo''' ) rows = cursor.fetchall() 순천향대학교컴퓨터공학과 13 SQL 실행 데이터조회예 import sqlite3 import datetime conn = sqlite3.connect('member.db') print("opened database successfully"); cursor = conn.cursor() cursor() cursor.execute(''' select * from meminfo''' ) rows = cursor.fetchall() for row in rows: print("id:%s %s, password:%s, name:%s %s, time:%s" % (row[0], row[1], row[2].decode("cp949"), row[3])) conn.close() close() 순천향대학교컴퓨터공학과이상정 14

시험주행 순천향대학교컴퓨터공학과 15 SQL 실행 열이름으로조회 열의인덱스가아닌이름으로조회시다음을지정 conn.row_factory = sqlite3.row import sqlite3 conn = sqlite3.connect('member.db') print("opened database successfully"); conn.row_factory = sqlite3.row cursor = conn.cursor() cursor.execute(''' select * from meminfo''' ) rows = cursor.fetchall() for row in rows: print("id: %s, password: %s, name: %s, time: %s" % (row['id'], row['passwd'], row['name'].decode("cp949"), cp949 row['time'])) conn.close() 순천향대학교컴퓨터공학과 16

로그인폼페이지 로그인폼페이지, loginform.html 계정, 비밀번호입력 로그인처리페이지 (loginproc.py) 로이동 계정이없으면회원가입 회원가입폼페이지 (memform.py) 이동 순천향대학교컴퓨터공학과이상정 17 loginform.html <html> <head> <title> 로그인 </title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <h1> 로그인 </h1> <hr> <form method="post" " action="/cgi-bin/loginproc.py"> / " 계정 : <input name="id" type="text"> <br><br> 비번 : <input name="passwd" type="password"> <br><br> </form> <p> <hr> <input type="submit" value=" 로그인 "> <br> <input type="reset" " value=" 취소 "> <br> <form method="post" " action="memform.html"> <input type="submit" value=" 회원가입 "> <br> </form> </body> </html> 순천향대학교컴퓨터공학과이상정 18

로그인처리 로그인처리페이지, loginproc.py 로그인페이지의계정, 비밀번호파라미터를전달받음 계정과비밀번호를데이터베이스와비교하여일치하면순천향서핑대회폼페이지 (surfform.html) 로이동하고, 일치하지않으면에러메시지출력 앞의데이터베이스 member.db를 C: Apache24 cgi-bin 디렉토리로복사 순천향대학교컴퓨터공학과이상정 19 컴퓨터와 #!/Python34/python 현대기술 # import cgi import cgitb; cgitb.enable() import sqlite3 loginproc.py # http 헤더 print("content-type: text/html") # 폼파라미터읽기 form = cgi.fieldstorage() idn = form.getvalue( getvalue('id') id) pwd = form.getvalue('passwd') # 데이터베이스조회 conn = sqlite3.connect( connect('member.db db') conn.row_factory = sqlite3.row cursor = conn.cursor() cursor.execute(''' select * from meminfo where id =? ''', (idn,)) row = cursor.fetchone() if row!= None: if idn == row['id'] and pwd == row['passwd'] : # http 헤더, 헤더의끝은 n n print("location: http://localhost/surfform.html n n html n n") else: print(" n n") # http 헤더끝 print("<h2> 로그인에러!!</h2>") else: print(" n n") # http 헤더끝 print("<h2> 로그인에러!!</h2>") conn.close() 순천향대학교컴퓨터공학과이상정 20

회원가입폼페이지 회원가입폼페이지, memform.html 이름, 계정, 비밀번호입력 회원가입처리페이지 (memproc.py) 로이동 순천향대학교컴퓨터공학과이상정 21 memform.html <html> <head> <title> 회원가입 </title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <h1> 회원가입 </h1> <hr> <form method="post" action="/cgi-bin/memproc.py"> 계정 : <input name="id" type="text"> <br><br> 비번 : <input name="passwd" type="password"> <br><br> 이름 : <inputname="name" name= name type="text"> text <br><br> <input type="submit" value=" 전송 "> <br> <input type="reset" value=" 취소 "> <br> </form> </body> </html> 순천향대학교컴퓨터공학과이상정 22

회원가입처리 회원가입처리페이지, memproc.py 회원가입폼페이지의이름, 계정, 비밀번호파라미터를전달받아데이터베이스에삽입 순천향대학교컴퓨터공학과이상정 23 #!/Python34/python # import cgi import cgitb; cgitb.enable() import sqlite3 import datetime memproc.py # http 헤더 print("content-type: text/html n n") # 폼파라미터읽기 form = cgi.fieldstorage() idn = form.getvalue('id') pwd = form.getvalue('passwd') name = form.getvalue( getvalue('name') name) tm = datetime.datetime.now() # 데이터베이스삽입 conn = sqlite3.connect( connect('member.db db') cursor = conn.cursor() cursor.execute(''' insert into meminfo (id, passwd, name, time) values(?,?,?,?)''', (idn, pwd, name.encode( encode("cp949") cp949), tm)) conn.commit() conn.close() print("<h3> 회원가입이되었읍니다.</h3>"); print("<hr><p>") print("id = %s, passwd = %s, name = %s, time = %s" % (idn, pwd, 10. name, 웹과tm)) 데이터베이스연결응용 순천향대학교컴퓨터공학과이상정 24

서핑대회폼페이지 서핑대회폼페이지, surfform.html 선수조회 조회처리페이지 (surfselect.py) 로이동 선수입력 입력처리페이지 (surfinsert.py) 이동 순천향대학교컴퓨터공학과이상정 25 <html> <head> <title> 순천향서핑대회 </title> <meta http-equiv="content-type" content="text/html; text/html; charset=utf-8" /> </head> <body> <h2> 순천향서핑대회 </h2> <hr> <h3> 선수조회 </h3> <form method="post" action="/cgi-bin/surfselect.py"> 이름 : <input name="name" type="text"> <br><br> <input type="submit" value=" 조회 "> <br> </form> <hr> <h3> 선수입력 </h3> <form method="post" action="/cgi-bin/surfinsert.py"> 이름 : <input name="name" type="text"> <br><br> 점수 : <input name="score" type="text"> <br><br> 성별 : 남 <input type = "radio" name = "gender" value = "male"> 여 <input type = "radio" name = "gender" value = "female"><br><br> 국가 : <select name = "country" size="3"> <option value = "kor"> 한국 </option> <option value = "usa"> 미국 </option> <option value = "chn"> 중국 </option> <option value = "jpa"> 일본 </option> <option value = "eng"> 영국 </option> <option value = "fra"> 프랑스 </option> <option value = "aus"> 호주 </option> </select> <br><br> <input type="submit" value=" 입력 "> <br> <input type= "reset" value= " 취소 "> <br> </form> </body> </html> 순천향대학교컴퓨터공학과이상정 26 surfform.html

SQLite 브라우저다운로드설치 SQLite 데이터베이스브라우저 http://sqlitebrowser.org/ 윈도우용다운로드 sqlitebrowser-3.6.0v3-win64.exe 더블클릭하여설치 실행시 MSVCR120.dll 에러발생하면다음을다운로드설치 http://pcsx2.net/download/development/svn.html 접속 vcredist_x64.exe 다운로드설치 순천향대학교컴퓨터공학과 27 SQLite브라우저 데이터베이스, 테이블생성 (1) SQLite 브라우저를사용하여데이테베이스, 테이블생성 데이터베이스, SoonSurf.db 테이블, surfinfo name text score real gender text country text SQLite 브라우저실행 New Database -> Add field 열이름과타입지정 순천향대학교컴퓨터공학과 28

순천향대학교컴퓨터공학과 29 순천향대학교컴퓨터공학과 30

SQLite브라우저 데이터베이스, 테이블생성 (2) 순천향대학교컴퓨터공학과 31 선수입력 선수입력, surfinsert.py 선수의각항목을데이터베이스 (SoonSurf.db) 의테이블 (surfinfo) 에삽입 SQLite 브라우저에서생성한데이터베이스와테이블 순천향대학교컴퓨터공학과 32

SQLite 브라우저 삽입확인 순천향대학교컴퓨터공학과 33 컴퓨터와 #!/Python34/python 현대기술 # import cgi import cgitb; cgitb.enable() import sqlite3 surfinsert.py # http 헤더 print("content-type: type: text/html n n") # 폼파라미터읽기 form = cgi.fieldstorage() name = form.getvalue( getvalue('name') name) score = form.getvalue('score') gender = form.getvalue('gender') country = form.getvalue('country') # 데이터베이스삽입 conn = sqlite3.connect('soonsurf.db') cursor = conn.cursor() cursor.execute( execute(''' insert into surfinfo (name, score, gender, country) values(?,?,?,?)''', (name, float(score), gender, country)) conn.commit() conn.close() close() print("<h2> 선수입력 </h2>") print("<br><hr>") print("name: name %s <br>" % name) print("score: %s <br>" % score) print("gender: %s <br>" % gender) print("country: %s <br>" % country) 순천향대학교컴퓨터공학과이상정 34

선수조회 선수조회, surfselect.py 선수데이터베이스 (SoonSurf.db) 의테이블 (surfinfo) 을이름으로조회 순천향대학교컴퓨터공학과 35 컴퓨터와 #!/Python34/python 현대기술 # import cgi import cgitb; cgitb.enable() import sqlite3 surfselect.py # http 헤더 print("content-type: type: text/html n n") # 폼파라미터읽기 form = cgi.fieldstorage() name = form.getvalue( getvalue('name') name) # 데이터베이스조회 conn = sqlite3.connect('soonsurf.db') conn.row_factory = sqlite3.row cursor = conn.cursor() cursor.execute(''' select * from surfinfo where name =? ''', (name,)) row = cursor.fetchone() print("<h2> 선수조회 </h2>") print("<br><hr>") if row!= None: print("name: name: %s <br>" %row['name']) print("score: %s <br>" % row['score']) print("gender: %s <br>" % row['gender']) print("country: %s <br>" % row['country']) else: print(" 선수데이터가없습니다!!") conn.close() 순천향대학교컴퓨터공학과이상정 36

과제 앞의순천향서핑대회 CGI 프로그램을수정하여데이터베이스에저장된선수의점수순서대로정렬하여모든선수의필드 ( 열 ) 들이출력하는프로그램을작성하라. 순천향대학교컴퓨터공학과 37